【发布时间】:2022-07-08 00:48:30
【问题描述】:
我将如何简单地实现“维护模式”?
因此:我的路线如下:
/ => home/contact => contact view/about=>about view
我试图通过在我的第一条路由 (/) 中添加一个守卫来解决这个问题,并在我的解析器中推送到 /maintenance。按照代码示例:
app_router.dart
part 'app_router.gr.dart';
@CupertinoAutoRouter(replaceInRouteName: 'View',
routes: <AutoRoute>[
AutoRoute(page: HomeView, initial: true, path: HomeView.route, guards: [MaintenanceGuard]),
AutoRoute(page: AboutView, path: AboutView.route),
AutoRoute(page: ContactView, path: ContactView.route),
AutoRoute(page: MaintenanceView, path: MaintenanceView.route),
])
class AppRouter extends _$AppRouter {
AppRouter({required MaintenanceGuard maintenanceGuard}) : super(maintenanceGuard: maintenanceGuard);
}
maintenance_guard.dart
class MaintenanceGuard extends AutoRouteGuard {
@override
void onNavigation(NavigationResolver resolver, StackRouter router) {
/// Proceed in debug mode
if (kDebugMode) {
resolver.next(true);
return;
}
/// Redirect to maintenance view
router.pushNamed(MaintenanceView.route);
}
}
它适用于 my-domain.com 和 my-domain.com/,但如果我重新加载页面,我会收到 404 错误:The requested URL was not found on this server。
同样,如果我直接插入urlmy-domain.com/maintenance
【问题讨论】:
标签: flutter flutter-web flutter-navigation flutter-packages