wrapper method

Route wrapper(
  1. RouteFactory rawFactory, {
  2. ColorProvider? nativeContainerBackgroundColorProvider,
  3. TransitionBuilderProvider? switchPageAnimation,
  4. List<NavigatorObserver>? observers,
  5. WidgetBuilder? errorPage,
  6. NavigatorKeyCallback? navigatorKeyCallback,
})

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,
  NavigatorKeyCallback? navigatorKeyCallback,
}) {
  return FaradayPageRouteBuilder(
    pageBuilder: (context) {
      _key ??= GlobalKey(debugLabel: 'TopNativeBridge');
      final page = FaradayNativeBridge(
        rawFactory,
        backgroundColorProvider: nativeContainerBackgroundColorProvider,
        transitionBuilderProvider: switchPageAnimation,
        observers: observers,
        errorPage: errorPage,
        key: _key,
        navigatorKeyCallback: navigatorKeyCallback,
      );
      return page;
    },
  );
}