alp*_*hin 2 router routes flutter
我得到 EpisodeDetailsRouteArgs 不能为空,因为它有一个必需的参数这个错误,即使我传递了参数。
这是我的墨水池小部件:
onTap: () {
AutoRouter.of(context).replace(EpisodeDetailsRoute(
podcastImageUrl: podcastImageUrl,
podcastName: podcastName,
podcastOwner: podcastOwner,
podcastEpisodes: podcastEpisodes,
));
},
Run Code Online (Sandbox Code Playgroud)
我的路由器:
@MaterialAutoRouter(
replaceInRouteName: 'Page,Route',
routes: <AutoRoute>[
AutoRoute(page: IntroductionPage),
AutoRoute(
page: LoginPage,
),
AutoRoute(page: HomePage),
AutoRoute(page: EpisodeDetailsPage, initial: true),
],
)
class $AppRouter {}
Run Code Online (Sandbox Code Playgroud)
我的剧集详细信息页面:
class EpisodeDetailsPage extends StatelessWidget {
const EpisodeDetailsPage({
Key? key,
required this.podcastImageUrl,
required this.podcastName,
required this.podcastOwner,
required this.podcastEpisodes,
}) : super(key: key);
final String podcastImageUrl;
final String podcastName;
final String podcastOwner;
final String podcastEpisodes;
@override
Widget build(BuildContext context) {
return const Scaffold();
}
}
Run Code Online (Sandbox Code Playgroud)
我使用最新版本的auto_route。你能帮助我吗 ?
我遇到了同样的问题,我们将根据我的问题回复这个问题。
该错误来自路由器文件和初始参数。
Router 文件,此处的 PageSplashScreen 具有初始类型,因为它是应用程序上显示的第一个屏幕,并且不需要任何参数,因为它是初始页面:
@MaterialAutoRouter(
replaceInRouteName: 'Page,Route',
routes: <AutoRoute>[
AutoRoute<dynamic>(
page: PageSplashScreen,
path: '/',
initial: true,
),
AutoRoute<dynamic>(
page: PageCapsule,
path: capsulePath,
children: homeTabRouter,
),
],
)
Run Code Online (Sandbox Code Playgroud)
因此,如果我们将问题放在子路由器上,如果初始值设置为 true,auto_route 将不会期望任何参数,即使需要一些参数。所以你只需要在非initial且需要接收参数的页面上删除initial: true即可。就像下面这样。
当前 homeTabRouter 变量:
const homeTabRouter = [
AutoRoute<dynamic>(
path: 'firstPage',
page: FirstPage,
initial: true,
),
AutoRoute<dynamic>(
path: 'secondPage',
page: SecondPage,
initial: true,
),
];
Run Code Online (Sandbox Code Playgroud)
修改后,homeTabRouter变量:
const homeTabRouter = [
AutoRoute<dynamic>(
path: 'firstPage',
page: FirstPage,
),
AutoRoute<dynamic>(
path: 'secondPage',
page: SecondPage,
),
];
Run Code Online (Sandbox Code Playgroud)
因此,现在如果您想将参数从 CapsulePage 传递到 FirstPage 或 SecondPage,这是可能的,因为它们不再是初始的。
| 归档时间: |
|
| 查看次数: |
1686 次 |
| 最近记录: |