【发布时间】:2020-12-16 06:19:42
【问题描述】:
我正在使用底部标签导航,并且我的屏幕具有以下逻辑:
Screen A
-> Button Open Screen B
-> Button Open Screen C
Screen B
-> Button Open Child Screen B
-> Button Open Screen C
我可以使用widget.mainTabController.animateTo(1); 通过代码从Screen A 导航到Screen B,效果很好。
我现在需要的是在Child Screen B 关闭后从Screen B 导航到Screen A。
class ScreenB extends StatefulWidget {
final TabController mainTabController;
ScreenB(TabController mainTabController)
: this.mainTabController = mainTabController;
@override
_State createState() => _State();
}
class _State extends State<ScreenB>
{
@override
Widget build(BuildContext context) {
// ...
GridView.builder(
// ...
itemBuilder: (BuildContext context, int index)
{
Entry entry = this.entries[index];
return entry.build(context);
}
);
}
}
class Entry extends State<ScreenB>
{
Widget build(BuildContext context)
{
// ...
onTap: () async {
// Opens the Screen B Child
final result = await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ScreenBChild(),
),
);
// Should go back to Screen A but does nothing
if (result)
widget.mainTabController.animateTo(0);
);
}
}
屏幕“子屏幕B”关闭后,我回到Screen B和代码widget.mainTabController.animateTo(0),虽然被触发,但没有任何反应,屏幕没有变化。控制台中也不会抛出错误。
【问题讨论】: