Mobile

10 mai, 2019

Flutter – Criando uma tela de login

100 visualizações
Publicidade

No artigo de hoje veremos como criar uma tela de login no Flutter.

O que é o Flutter?

Flutter é um SDK de aplicativo móvel da Google, que ajuda a criar aplicativos móveis modernos para iOS e Android, usando uma única (quase) base de código.

Se você não conhece o Flutter, veja o meu artigo “Flutter – Primeiros contatos e impressões“.

Criando uma interface de Login

No artigo de hoje veremos como criar uma tela de login cujo layout pode ser visto abaixo:

Destaques da tela de login:

  • Layout centralizado
  • Dois widgets para entrada do usuário com textos
  • No primeiro é exibido o teclado numérico
  • No segundo é exibido o teclado alfanumérico
  • Um Button com bordas arredondas e um texto

Podemos usar a ferramenta de renderização visual para nos ajudar a visualizar melhor o layout.

Pressione Ctrl + Shift + P, e em seguida, selecione “Toggle Debug Painting“.

Essa opção ativa linhas azuis no emulador, permitindo que você visualize as partes do seu layout.

Criando o projeto – Tela de login

No Visual Studio Code, pressione Ctrl + Shift + P para abrir a paleta de comandos e em seguida selecione a opção “Fluter:New Project“.

A seguir, informe o nome do projeto: flutter_tela_login e tecle Enter.

Na janela de diálogo a seguir, selecione a pasta onde o projeto será salvo e clique em “Select a folder to create the project in“.

O Flutter vai criar um projeto padrão, onde todo o código da aplicação vai estar no arquivo main.dart dentro da pasta lib do projeto.

A figura abaixo mostra a estrutura do projeto com pastas, arquivos e o código do arquivo main.dart:

Estrutura de pastas e arquivos criados no projeto Flutter:

Vamos selecionar o arquivo main.dart e apagar todo o código gerado, deixando o arquivo vazio.

A pasta lib é a pasta principal para escrever o código do aplicativo. Atualmente, o modelo de projeto padrão contém apenas um arquivo main.dart, que é essencialmente um ponto de entrada para o aplicativo Flutter.

Quando começarmos a criar aplicativos para mais de uma tela seguindo um padrão de design específico, será preciso criar mais arquivos e pastas aqui.

A seguir, vamos criar dentro da pasta lib outra pasta chamada widgets, onde vamos criar o widget da nossa tela de login.

Dentro da pasta widgets vamos criar o arquivo login.dart, que representa o widget da nossa tela de login.

Assim, no momento, a estrutura do nosso projeto está assim:

Definindo a entrada da aplicação no widget StatelessWidget

Na pasta lib vamos abrir o arquivo main.dart, que está vazio, e vamos definir o código para criar um widget sem estado/StatelessWidget (um widget sem estado é imutável e não sofre modificações nem interação com o usuário).

No Visual Studio Code, podemos a começar a digitar st, e poderemos usar a opção do menu de atalho selecionando: “Flutter stateless widget“.

Isso irá gerar o código padrão para criar o widget sem estado. Basta digitar a seguir, o nome do widget.

Vamos definir o nome MyApp, incluir a definição do método main() invocando MyApp() e definir a referência ao pacote: flutter/material.dart:

import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      
    );
  }
}

Agora, ao invés de retornar apenas um Container, vamos retornar um MaterialApp, definindo os argumentos title, theme e home.

Nota: veja o meu artigo sobre MaterialApp:

No argumento home vamos invocar o widget Login(), que será a nossa tela de login.

import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Tela Login',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: Login(),
    );
  }
}

No código acima vemos os seguintes atributos do MaterialApp:

  • title: título da aplicação
  • theme: tema utilizado, possui alguns outros atributos a serem configurados, como: primarySwatch, brightness, primaryColor e accentColor, entre outros. No exemplo, usamos apenas um primarySwatch. Também é definida a classe Colors, que implementa internamente as especificações de cores do Material Design
  • home: a primeira tela a ser mostrada no aplicativo deve ser especificada dentro desse atributo. Telas flutuantes são distribuídas em rotas. Neste caso, home representa “/”. Rotas podem ser configuradas usando o atributo routes

Usaremos a propriedade “home” do MaterialApp para especificar o ponto de entrada principal, ou “route”, no aplicativo. Uma “rota” no Flutter é apenas uma única tela.

A seguir, definiremos o widget Login da propriedade home, e vamos fazer isso usando widgets com estado (StatefulWidget).

Um StatefulWidget é um widget que possui estado mutável. Estado é a informação que pode ser lida de forma síncrona quando o widget é construído, e que pode mudar durante o tempo de vida do widget.

Faremos isso na próxima parte do artigo no arquivo login.dart da pasta widgets.