导航到MaterialPageRoute中的另一个选项卡



我本以为这个问题有一个简单的解决方案,但我还没有找到任何。。。

我的应用程序中有几个选项卡,在其中一个选项卡中,我使用打开另一个屏幕

Navigator.push(context, MaterialPageRoute(...

一旦用户点击该屏幕中的按钮,我想将其弹出导航到另一个选项卡。

我试图将TabController传递到相关选项卡及其子屏幕,但这似乎不是最简单的解决方案,也不容易实现,因为控制器尚未定义:

tabController = DefaultTabController(
body: TabBarView(
children: [
FirstTab(
tabController: tabController // <- tabController is not defined yet at this point:(

有没有";全局";用于重置应用程序的";整个";路由,以便同时弹出MaterialPageRoute导航到特定选项卡?

您可以使用Navigator.of(context(.pushReplacement

我找到的解决方案是同步调用Navigator的push并检查其返回值。然后,当我想导航到另一个选项卡时,我只需在Navigator的弹出窗口中发送真实的指示。

这就是我的导航方法,请注意,在导航到另一个选项卡之前,我不得不添加一个短暂的延迟,不确定为什么,但没有它就无法工作:

_navigateToDetailsScreen() async {
bool shouldNavigateToHomeTab = await Navigator.push(
context,
MaterialPageRoute(builder: (context) => DetailsScreen()),
));
if (shouldNavigateToHomeTab) {
Future.delayed(const Duration(milliseconds: 500), () {
DefaultTabController.of(context)!.animateTo(0);
});
}
}

这就是我所说的流行:

Navigator.of(context).pop(true);

这对我来说似乎是最简单的解决方案,到目前为止我没有发现任何问题

相关内容

  • 没有找到相关文章

最新更新