Flutter 如何修复';请求的自动外部操作的上下文不包括自动外部。';飘飘然?
我正在使用v2.2.0包来处理颤振应用程序中的路由。当我点击按钮进入A/B页时,我得到Flutter 如何修复';请求的自动外部操作的上下文不包括自动外部。';飘飘然?,flutter,flutter-routes,Flutter,Flutter Routes,我正在使用v2.2.0包来处理颤振应用程序中的路由。当我点击按钮进入A/B页时,我得到 AutoRouter operation requested with a context that does not include an AutoRouter. 因为我在MaterialApp.router中使用了一个构建器,所以上下文不应该包括AutoRouter。我在下面添加了代码 飞镖 @MaterialAutoRouter( replaceInRouteName: 'Page,Route
AutoRouter operation requested with a context that does not include an AutoRouter.
因为我在MaterialApp.router中使用了一个构建器,所以上下文不应该包括AutoRouter。我在下面添加了代码
飞镖
@MaterialAutoRouter(
replaceInRouteName: 'Page,Route',
routes: <AutoRoute>[
AutoRoute(page: MyApp, initial: true),
AutoRoute(page: PageA),
AutoRoute(page: PageB),
],
)
class $AppRouter {}
此示例是按照提供的文档完成的。
如何解决此问题将material应用程序生成器中的代码删除到您的主页或其他内容。
您之所以会出现错误,是因为您传递的自定义生成器忽略了传递给生成器的路由器小部件。我也遇到了相同的错误,在我的示例中,添加
routerDelegate
和routeInformationParser
并删除builder
对我有效
MaterialApp.router(
routerDelegate: AutoRouterDelegate(
_appRouter,
navigatorObservers: () => [AutoRouteObserver()],
),
routeInformationParser: _appRouter.defaultRouteParser(),
默认路径来自
initial:true
这样做是不可能处理基于提供者的路由的,如果您尝试它,您将得到一个默认路径。
class MyApp extends StatelessWidget {
final _appRouter = AppRouter();
@override
Widget build(BuildContext context) {
return MaterialApp.router(
routerDelegate: _appRouter.delegate(),
routeInformationParser: _appRouter.defaultRouteParser(),
builder: (context, widget) {
return Scaffold(
appBar: AppBar(
title: Text('Material App Bar'),
),
body: Center(
child: Column(
children: [
ElevatedButton(
onPressed: () => context.pushRoute(
RouteA()),
child: Text('Page A')),
ElevatedButton(
onPressed: () => context.pushRoute(
RouteA()),
child: Text('Page B'))
],
)),
);
},
);
}
}
MaterialApp.router(
routerDelegate: AutoRouterDelegate(
_appRouter,
navigatorObservers: () => [AutoRouteObserver()],
),
routeInformationParser: _appRouter.defaultRouteParser(),