wrapper method
Route
wrapper(
- RouteFactory rawFactory, {
- ColorProvider? nativeContainerBackgroundColorProvider,
- TransitionBuilderProvider? switchPageAnimation,
- List<
NavigatorObserver> ? observers, - WidgetBuilder? errorPage,
Flutter Native 容器
: iOS端是指FlutterViewController
Android端是指
FlutterActivity
或者FlutterFragment
容器初始化时需要指定 name
以及 arguments
以下统一简称容器
Faraday
内部会为每一个容器
实例维护一个 Navigator, 并根据容器
参数设置 initialRoute
因为内部维护的时一个标准的Navigator对象,所以你可以像写一个纯Flutter项目那样进行页面导航以及传递参数
@override
void onPress() async {
final result = await Navigator.of(context).pushNamed('Any Route');
log(result.toString());
}
同理关闭页面传值也很简单
@override
void onPress() async {
final result = await Navigator.of(context).pop('Any ...');
log(result.toString());
}
Implementation
Route<dynamic> wrapper(
RouteFactory rawFactory, {
ColorProvider? nativeContainerBackgroundColorProvider,
TransitionBuilderProvider? switchPageAnimation,
List<NavigatorObserver>? observers,
WidgetBuilder? errorPage,
}) {
return FaradayPageRouteBuilder(
pageBuilder: (context) {
_key ??= GlobalKey(debugLabel: 'TopNativeBridge');
final page = FaradayNativeBridge(
rawFactory,
backgroundColorProvider: nativeContainerBackgroundColorProvider,
transitionBuilderProvider: switchPageAnimation,
observers: observers,
errorPage: errorPage,
key: _key,
);
return page;
},
);
}