Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev3.0.0

no_context_navigation

Um pacote Flutter criado para navegar entre telas (rotas) sem usar o contexto (BuildContext).

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
845
Curtidas
20
Pontos Pub
150

Instalar pacote

flutter pub add no_context_navigation

Visão geral do pacote

Orientação gerada a partir de informações públicas. Apenas para referência.

O pacote no_context_navigation permite que desenvolvedores do Flutter naveguem entre telas sem precisar de um BuildContext. Isso é especialmente útil em situações onde o contexto não está disponível, como durante operações assíncronas ou ao trabalhar com métodos globais. Ao fornecer uma API de navegação simples e estática, ele simplifica a gestão de rotas em todo o aplicativo. O pacote suporta todas as principais plataformas, incluindo Android, iOS, Web, macOS, Windows e Linux, tornando-o versátil para aplicações multiplataforma.

Casos de uso

  • Navegando a partir de tarefas em segundo plano
  • Manipuladores de erro globais
  • Callbacks assíncronos
  • Integração de gerenciamento de estado
  • Fluxos de inicialização do aplicativo

Principais recursos

  • Sem necessidade de BuildContext
  • Métodos de navegação estática
  • Suporte multiplataforma
  • API simples
  • Funciona com qualquer gerenciamento de estado

Indicado para

  • Desenvolvedores evitando dependência de contexto
  • Aplicativos com lógica de estado complexa
  • Ferramentas de navegação globais
  • Projetos grandes em Flutter
  • Navegação de contexto não-widget

Considerações

  • Requer inicialização adequada
  • Pode contornar os guardas de rota se não for gerenciado
  • Não adequado para navegação específica de widget
  • Limitado a transições de rota básicas
  • Melhor usado junto com a configuração de roteamento

README original

Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.

No Context Navigation

No Context Navigation Package - pub.dev

Instead of using Navigator.of(context).pushNamed or some other method like pop() or pushReplacementNamed() USING context. With this package you don't need to anymore.

This service use a GlobalKey of type NavigatorState which can be used across the entire applicaton.

Now, you only need to this:

navService.pushNamed('/detail_screen', args: 'From Home Screen');

But first, add the navigationKey to your MaterialApp's navigationKey property:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      //Over here
      navigatorKey: NavigationService.navigationKey,
      onGenerateRoute: (RouteSettings settings) {
        switch (settings.name) {
          case '/':
            return MaterialPageRoute(builder: (_) => HomeScreen());
          case '/detail_screen':
            return MaterialPageRoute(builder: (_) => DetailScreen(message: settings.arguments));
          default:
            return null;
        }
      },
    );
  }
}

Use navService object to be able to acess those methods:

import 'package:flutter/material.dart';

final NavigationService navService = NavigationService();

class NavigationService<T, U> {
  static GlobalKey<NavigatorState> navigationKey = GlobalKey<NavigatorState>();

  Future<T> pushNamed(String routeName, {Object args}) async =>
      navigationKey.currentState.pushNamed<T>(
        routeName,
        arguments: args,
      );

  Future<T> push(Route<T> route) async =>
      navigationKey.currentState.push<T>(route);

  Future<T> pushReplacementNamed(String routeName, {Object args}) async =>
      navigationKey.currentState.pushReplacementNamed<T, U>(
        routeName,
        arguments: args,
      );

  Future<T> pushNamedAndRemoveUntil(
    String routeName, {
    Object args,
    bool keepPreviousPages = false,
  }) async =>
      navigationKey.currentState.pushNamedAndRemoveUntil<T>(
        routeName,
        (Route<dynamic> route) => keepPreviousPages,
        arguments: args,
      );

  Future<T> pushAndRemoveUntil(
    Route<T> route, {
    bool keepPreviousPages = false,
  }) async =>
      navigationKey.currentState.pushAndRemoveUntil<T>(
        route,
        (Route<dynamic> route) => keepPreviousPages,
      );

  Future<bool> maybePop([Object args]) async =>
      navigationKey.currentState.maybePop<bool>(args);

  bool canPop() => navigationKey.currentState.canPop();

  void goBack({T result}) => navigationKey.currentState.pop<T>(result);
}

Hope you enjoy!

Categorias

Repositório-fonte

Projetos que usam este pacote

Ainda não há dados.