Skip to content

Latest commit

 

History

History
92 lines (72 loc) · 3.15 KB

README_PT.md

File metadata and controls

92 lines (72 loc) · 3.15 KB

Nuvigator

CircleCI Pub

Pacote para roteamento e navegação.

O que é

Nuvigator provê uma poderosa abstração de roteamento sobre os próprios navegadores do Flutter. Modele fluxos de navegação complexos usando uma abordagem principalmente declarativa e concisa, sem precisar se preocupar com vários comportamentos complicados que o Nuvigator trata para você.

Nuvigator pode ajudar você com:

  • Grande/Modular Apps: Onde você precisa ter uma API unificada para registrar as rotas e projetar a relação entre elas
  • Navegação aninhada: Quando você deseja ter um Navigator aninhado / filho dentro do seu aplicativo, criando o conceito de fluxos autocontidos - Handles Navigation thought Nuvigator ins your Widget Tree, not need to know where your route is declared
    • Lida com o comportamento pop quando um navegador (Navigator) aninhado chega ao seu fim, é capaz de encaminhar os resultados pop de forma transparente para o chamador subjacente, auxiliares do provedor para lidar com a navegação aninhada
    • Lida com animação / transição Hero entre navegadores aninhados
    • Manipula o botão Voltar do Android corretamente em navegadores aninhados
    • Melhore o suporte para PageRoutes aninhados com o mixin NuvigatorPageRoute
  • Usando DeepLinks: você deseja navegar dentro de seu aplicativo usando DeepLinks, com suporte para parâmetros de caminho e parâmetros de consulta
  • Uma API declarativa e fácil de usar para declarar e compor rotas juntas

Documentação da API

Concentre-se em fornecer uma API mais flexível, fácil e dinâmica para declarar navegação e roteamento

Começo rápido

O mais simples que você pode obter:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Nuvigator App',
      builder: Nuvigator.routes(
        initialRoute: 'home',
        screenType: materialScreenType,
        routes: [
          NuRouteBuilder(path: 'home', builder: (_, __, ___) => HomeScreen()),
          NuRouteBuilder(path: 'second', builder: (_, __, ___) => SecondScreen()),
        ],
      ),
    );
  }
}

Um exemplo mais completo:

import 'package:nuvigator/next.dart'; // importe o próximo arquivo em vez de `nuvigator.dart`
import 'package:flutter/material.dart';

// Defina a nova NuRoute
class MyRoute extends NuRoute {
  @override
  String get path => 'my-route';

  @override
  ScreenType get screenType => materialScreenType;

  @override
  Widget build(BuildContext context, NuRouteSettings settings) {
    return MyScreen(
      onClick: () => nuvigator.open('next-route'),
    );
  }
}

// Defina a sua NuRouter
class MyRouter extends NuRouter {
  @override
  String get initialRoute => 'my-route';

  @override
  List<NuRoute> get registerRoutes => [
    MyRoute(),
  ];
}

// Render
Widget build(BuildContext context) {
  return Nuvigator(
    router: MyRouter(),
  );
}

Licença

Apache License 2.0