Pakete, Repositories und App-Kategorien suchen

Paketdetailsv3.0.0

no_context_navigation

Ein Flutter-Paket, das zum Navigieren zwischen Bildschirmen (Routen) ohne Verwendung des Kontexts (BuildContext) erstellt wurde.

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
845
Likes
20
Pub-Punkte
150

Paket installieren

flutter pub add no_context_navigation

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

Das no_context_navigation-Paket ermöglicht Flutter-Entwicklern die Navigation zwischen Bildschirmen ohne BuildContext. Dies ist besonders nützlich in Situationen, in denen der Kontext nicht verfügbar ist, beispielsweise während asynchroner Operationen oder bei der Arbeit mit globalen Methoden. Durch die Bereitstellung einer einfachen, statischen Navigations-API vereinfacht es die Routenverwaltung im gesamten App-System. Das Paket unterstützt alle wichtigen Plattformen, einschließlich Android, iOS, Web, macOS, Windows und Linux, was es vielseitig für plattformübergreifende Anwendungen macht.

Anwendungsfälle

  • Navigieren von Hintergrundaufgaben aus
  • Globale Fehlerhandler
  • Asynchrone Rückrufe
  • Zustandsverwaltungsintegration
  • App-Initialisierungsabläufe

Hauptmerkmale

  • Kein Bedarf an BuildContext
  • Statische Navigationsmethoden
  • Plattformübergreifende Unterstützung
  • Einfache API
  • Funktioniert mit jeder Zustandsverwaltung

Geeignet für

  • Entwickler vermeiden Kontextabhängigkeit
  • Apps mit komplexer Zustandslogik
  • Globale Navigationswerkzeuge
  • Großskalige Flutter-Projekte
  • Nicht-Widget-Kontextnavigation

Hinweise

  • Erforderliche korrekte Initialisierung
  • Kann Routenwächter umgehen, wenn nicht verwaltet
  • Nicht geeignet für widget-spezifische Navigation
  • Beschränkt auf grundlegende Routenübergänge
  • Am besten zusammen mit der Routing-Konfiguration verwendet

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

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!

Kategorien

Quell-Repository

Projekte, die dieses Paket verwenden

Noch keine Daten verfügbar.