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 来讨论您想进行的更改。
请确保适当地更新测试。