Daves Balthazar

093 – Como Navegar Entre Janelas no FLUTTER – Curso de Flutter

Playlist: Curso Grátis de FLUTTER e DART Completo

6. Navegue para uma nova tela
Nesta etapa, você adicionará uma nova página (chamada de rota no Flutter) que exibe os favoritos. Você aprenderá a navegar entre a rota residencial e a nova rota.

Em Flutter, o Navegador gerencia uma pilha contendo as rotas do aplicativo. Empurrando uma rota para a pilha do Navegador, atualiza a exibição para essa rota. Popping uma rota da pilha do Navegador, retorna a exibição para a rota anterior.

Em seguida, você adicionará um ícone de lista ao AppBar no método de construção para RandomWordsState. Quando o usuário clica no ícone da lista, uma nova rota que contém os favoritos salvos é enviada para o Navegador, exibindo o ícone.

 Adicione o ícone e sua ação correspondente ao método de construção:

classe RandomWordsState estende estado MENOR RandomWords MAIOR
  …
  @sobrepor
  Construção de Widget (contexto BuildContext)
    Andaime de retorno (
      appBar: AppBar (
        title: Text (‘Gerador de nome de inicialização’),
        actions: MENOR Widget MAIOR [// Adiciona 3 linhas daqui …
          IconButton (ícone: Icon (Icons.list), onPressed: _pushSaved),
        ], // … para aqui.
      )
      body: _buildSuggestions (),
    );
  
  …

Dica: Algumas propriedades do widget usam um único widget (filho) e outras propriedades, como action, recebem uma matriz de widgets (filhos), conforme indicado pelos colchetes ([]).

Adicione uma função _pushSaved () à classe RandomWordsState.

  void _pushSaved ()
  
 Hot recarregue o aplicativo. O ícone de lista () aparece na barra de aplicativos. Tocar não faz nada ainda, porque a função _pushSaved está vazia.

Em seguida, você construirá uma rota e a empurrará para a pilha do Navegador. Esta ação altera a tela para exibir a nova rota. O conteúdo da nova página é construído na propriedade builder do MaterialPageRoute, em uma função anônima.

 Chame Navigator.push, como mostrado abaixo, que empurra a rota para a pilha do Navigator. O IDE irá reclamar sobre o código inválido, mas você irá corrigir isso na próxima seção.

void _pushSaved ()
  Navigator.of (contexto) .push (
  );

Em seguida, você adicionará o MaterialPageRoute e seu construtor. Por enquanto, adicione o código que gera as linhas ListTile. O método divideTiles () de ListTile adiciona espaçamento horizontal entre cada ListTile. A variável dividida contém as linhas finais, convertidas em uma lista pela função de conveniência, toList ().

Adicione o código, conforme mostrado abaixo:

void _pushSaved ()
  Navigator.of (contexto) .push (
    MaterialPageRoute MENOR void MAIOR (// Adicione 20 linhas daqui …
      construtor: (contexto BuildContext)
        final Iterable MENOR ListTile MAIOR tiles = _saved.map (
          (Par do WordPair)
            return ListTile (
              título: Texto (
                pair.asPascalCase,
                style: _biggerFont,
              )
            );
          
        );
        Lista final MENOR Widget MAIOR dividida = ListTile
          .divideTiles (
            contexto: contexto,
            telhas: telhas,
          )
          .listar();
      
    ), // … para aqui.
  );

A propriedade builder retorna um Scaffold, contendo a barra de aplicativos da nova rota, denominada “Sugestões Salvas”. O corpo da nova rota consiste em um ListView contendo as linhas ListTiles; cada linha é separada por um divisor.

 Adicione divisores horizontais, conforme mostrado abaixo:

void _pushSaved ()
  Navigator.of (contexto) .push (
    MaterialPageRoute MENOR void MAIOR (
      construtor: (contexto BuildContext)
        final Iterable MENOR ListTile MAIOR tiles = _saved.map (
          (Par do WordPair)
            return ListTile (
              título: Texto (
                pair.asPascalCase,
                style: _biggerFont,
              )
            );
          
        );
        Lista final MENOR Widget MAIOR dividida = ListTile
          .divideTiles (
            contexto: contexto,
            telhas: telhas,
          )
              .listar();

        retorno Andaime (// Adicione 6 linhas daqui …
          appBar: AppBar (
            título: Texto (‘Sugestões Salvas’),
          )
          corpo: ListView (filhos: divididos),
        ); // … para aqui.
      
    )
  );

 Hot recarregue o aplicativo. Favorito algumas das seleções e toque no ícone da lista na barra de aplicativos. A nova rota aparece contendo os favoritos. Observe que o Navegador adiciona um botão “Voltar” à barra de aplicativos. Você não teve que implementar explicitamente Navigator.pop. Toque no botão Voltar para retornar à rota residencial.

iOS – rota principal

iOS – rota de sugestões salvas