我有一个上层小部件和3个下层小部件,分别由bottomNavigationBar和PageView管理。
在第1页子级小部件中输入的数据将发送到第2页。
父级窗口小部件中有一个方法 onTapped ,它将名称更新为在Page1中输入的“ John”,然后在Page2中显示。
假设如果我在Page1中输入名称“ Jane”,并且当我单击bottomNavigationBar上的Page2时,onTapped方法将立即将名称更新为Page2(显示John)。问题是如果我要从Page1滑动到Page2。在第2页上的名称仍然是“简”。如果我再次滑动到Page 3,然后又回到Page 2或从Page 1到Page 2,则名称将更新为“ John”。
bottomNavigationBar的“ onTap:”和PageView的“ onPageChanged:”都使用相同的方法 onTapped 。
我原本希望这两个页面滑动或单击导航栏都会产生相同的结果。
答案 0 :(得分:0)
如注释中所述,只有在更改视口(如此处所述)后,才调用PageView onPageChanged:docs.flutter.io/flutter/widgets/PageView/onPageChanged.html它的工作方式与bottomNavigationBar不同:轻按其中一项时调用。
要在第二页之前调用该方法:将Listener添加到pageController。它解决了我的问题。