在Flutter中退出应用程序之前的默认屏幕

hmmo2u0o  于 2023-05-08  发布在  Flutter
关注(0)|答案(1)|浏览(182)

我在flutter中使用MaterialRouteNavigator,因为go_router不支持许多必须具有的组件,如

  • PopUntil()
  • pushReplacementAndPopUntil()

这里我有每个屏幕的基本路线和描述性路线。我的要求是我可以在任何屏幕,如果屏幕是导航堆栈中的唯一路线,我希望它重定向到基地路线退出应用程序之前.

示例:

我在个人资料屏幕,它是在导航堆栈中的唯一页面,当点击后退按钮,而不是通常的行为关闭的应用程序,我希望应用程序重定向到基地路线,然后退出应用程序.
route

class MyRoutes {
    static Route<dynamic> generateRoute(RouteSettings settings) {
        switch (settings.name) {      
            case Routes.profileMain:
                return MaterialPageRoute(builder: (context) => const ProfileScreen());
            case Routes.categoryAll:
                return MaterialPageRoute(builder: (context) => const CategoriesAll());
            case Routes.filter:
                return MaterialPageRoute(builder: (context) => const FilterScreen());
     
            default:
                return MaterialPageRoute(builder: (context) {
                    return BlocBuilder<AuthCubit, AuthState>(
                        buildWhen: (oldState, newState) {
                            return oldState is AuthInitialState;
                        }, 
                        builder: (context, state) {
                            if (state is AuthLoggedInState) {
                                return const MainHomeScreen();
                            } else {
                                return SignIn();
                            }
                        },
                    );
                }
            );
        }
    }
}

base route是由default返回的。如果这是不可行的,我也很好地重定向到MainHomeScreen()。我的preferred将是先验的,这样它就可以是动态的。

相关问题