【发布时间】:2019-09-26 09:42:15
【问题描述】:
我有一个父小部件和 3 个由 bottomNavigationBar 和 PageView 共同管理的子小部件。
在第 1 页子小部件中输入的数据将发送到第 2 页。
我在 Parent 小部件中有一个方法 onTapped,会将名称更新为在 Page1 中输入的“John”,然后在 Page2 中显示。
假设如果我在 Page1 中输入了名称“Jane”,并且当我单击底部导航栏上的 Page2 时,onTapped 方法将立即将名称更新为 Page2(显示 John)。问题是如果我要从 Page1 滑动到 Page2。第 2 页上的名字仍然是“简”。如果我再次滑动到第 3 页然后再返回第 2 页或第 1 页到第 2 页,则名称将更新为“John”。
bottomNavigationBar 的 "onTap:" 和 PageView 的 "onPageChanged:" 都使用相同的方法onTapped。
我原以为页面滑动或点击导航栏都会产生相同的结果。
【问题讨论】:
-
似乎 PageView onPageChanged 仅在此处提到的视口更改后才被调用:docs.flutter.io/flutter/widgets/PageView/onPageChanged.html 它与 bottomNavigationBar 的工作方式不同:当点击其中一项时调用。有没有办法在视口更改之前使用 PageView 运行该方法?