【问题标题】:How to make the inner stateful widget received the scroll event in Flutter?如何让内部有状态小部件接收到 Flutter 中的滚动事件?
【发布时间】:2020-04-11 18:48:12
【问题描述】:

我在 ListView 中有一个 GridView,但 GridView 包含在不同的 Stateful 小部件中。我注意到我放在 GridView 上的 ScrollController 从未被调用,但我需要它以便我可以检测屏幕是否已到达底部,以便我可以加载下一批数据(无限滚动)。我该怎么做?我尝试将 primary: true 添加到 GridView 并将 primary: false 添加到 ListView 但它不起作用。

class UserProfile extends StatefulWidget
-> final userId: String;
-> build () {
   -> ListView {
      -> children: [
         -> User avatar
         -> User name
         -> Action button
         -> TileGallery(userId: userId)

class TileGallery extends StatefulWidget
-> final _scrollController = Controller();
-> initState() {
   -> _scrollController.addListener(_onScroll);
-> build () {
   -> GridView {
      -> controller: _scrollController
-> _onScroll() {     // never called

对不起,奇怪的代码。实际代码中有太多不相关的代码。问题是,我曾经将 TileGallery 用作独立的屏幕小部件(例如,在构建中有 Scaffold),当时,_onScroll() 函数被调用。我该如何解决这个问题?

【问题讨论】:

  • 你能给我包含这个Controller类的文件名吗?

标签: listview flutter gridview


【解决方案1】:

创建ScrollController 实例,而不仅仅是Controller

【讨论】:

  • 有趣。但目前我不得不使用一种解决方法,将所有这两个小部件放在一个小部件中,以简化重建通知和数据流。将尝试在下一次小部件重构中使用您的解决方案。谢谢。
猜你喜欢
  • 2021-05-19
  • 2021-08-27
  • 1970-01-01
  • 2019-09-23
  • 1970-01-01
  • 2019-06-10
  • 2018-11-13
  • 2018-09-01
  • 2018-07-28
相关资源
最近更新 更多