FlutterNavigator

FlutterNavigator 是一个 Dart 库,用于在没有构建上下文的情况下处理 Navigator API。该包封装了 NavigatorKey,并为在 Flutter 应用程序中导航而不使用上下文提供了一个更简洁的服务。

安装

使用 pubspec.yaml 文件来安装依赖项。

flutter_navigator: ^0.1.2

用法

添加 Navigator Key

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Navigator Key',
      navigatorKey: FlutterNavigator().navigatorKey,
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const PageOne(),
    );
  }
}

您需要为 MaterialApp 提供 navigator key,因为这是服务在没有构建上下文的情况下与 navigator 状态进行通信的方式。

使用 FlutterNavigator

final FlutterNavigator _flutterNavigator = FlutterNavigator();

_flutterNavigator.push(PageTwo.route());

FlutterNavigator 是一个单例服务,因此它将在应用程序的整个生命周期中始终保持相同的实例。您可以通过服务调用 Navigator API 方法(例如“push”、“pop”、“pushAndRemoveUntil”等)……就是这么简单!

使用 FlutterNavigator Observers

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Observers',
      navigatorKey: FlutterNavigator().navigatorKey,
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      navigatorObservers: [
        FlutterNavigator().routeObserver,
      ],
      home: const PageOne(),
    );
  }
}

与 navigator key 一样,您可以使用服务提供的路由观察者,并且该观察者可以在整个应用程序中访问。

创建自己的实现

class CustomFlutterNavigator implements IFlutterNavigator

要创建自己的实现,您只需要实现 IFlutterNavigator 接口并提供所有必需的方法和属性。

示例

  • BLoC 导航 – 一个关于如何在 BLoC 中使用 FlutterNavigator 的示例。

贡献

欢迎 Pull requests。对于重大更改,请先打开一个 issue 来讨论您想进行的更改。

请确保适当地更新测试。

许可证

MIT

GitHub

查看 Github