【问题标题】:Flutter - Strange behaviour for bottomNavigationBar and PageViewFlutter - bottomNavigationBar 和 PageView 的奇怪行为
【发布时间】: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 运行该方法?

标签: dart flutter


【解决方案1】:

正如评论中提到的,PageView onPageChanged 仅在此处提到的视口更改后调用:docs.flutter.io/flutter/widgets/PageView/onPageChanged.html 它的工作方式与 bottomNavigationBar 不同:当点击其中一项时调用。

在第 2 页之前调用该方法:将 Listener 添加到 pageController。它解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 2021-03-05
    • 2021-09-25
    • 2021-12-08
    • 2017-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多