保留具有热重载功能的嵌套导航器路由

Preserve nested Navigator route with hot reload

提问人:Daniel Walczak 提问时间:6/30/2020 更新时间:6/30/2020 访问量:358

问:

我有基本的嵌套导航器设置,但是当我在重新加载后在特定屏幕上工作时,我会重定向到初始屏幕而不是我正在处理的屏幕。是否有可能以某种方式保留当前屏幕?

class SignupNavigator extends StatelessWidget {
  final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();

  SignupNavigator();

  Widget _routeBuilder(String name, BuildContext context,
      {int materialIndex: 500}) {
    final routes = {
      SignupRoutes.role: (BuildContext _) => SignupRole(),
      SignupRoutes.phoneNumber: (BuildContext _) => SignupPhoneNumber(),
      SignupRoutes.schools: (BuildContext _) => SignupSchools(),
      SignupRoutes.info: (BuildContext _) => SignupInfo(),
      SignupRoutes.credentials: (BuildContext _) => SignupCredentials(),
      SignupRoutes.summary: (BuildContext _) => SignupRole(),
    };

    return routes[name](context);
  }

  @override
  Widget build(BuildContext context) {
    return Navigator(
      key: navigatorKey,
      initialRoute: SignupRoutes.role,
      onGenerateRoute: (routeSettings) {
        return MaterialPageRoute(
          builder: (context) => _routeBuilder(routeSettings.name, context),
        );
      },
    );
  }
}

Flutter 嵌套 导航器

评论

0赞 shorol 10/10/2023
使用有状态小部件

答: 暂无答案