我有一个页面,它有一个带有刷新指示器的列表.当我的列表中有很多元素(填充整个视图以及更多元素,例如我可以滚动)时,刷新指示器会起作用. 但是,当列表中只有一两个元素(没有要滚动的元素)时,刷新指示器就不起作用了.这是预期中的行为吗?有没有办法让指标也适用于短名单?

我try 用滚动条包装列表视图(刷新指示器的子级),但问题仍然存在.


Future<void> _onRefresh() async {
    _getPeople();
  }


@override
  Widget build(BuildContext context) {
    super.build(context);
    return new Container(
      child: _items.length == 0
          ? Center(child: CircularProgressIndicator())
          : new RefreshIndicator(
              onRefresh: _onRefresh,
              child: Scrollbar(
                child: new ListView.builder(
                  controller: controller,
                  itemBuilder: (context, index) {
                    return PeopleCard(
                      People: _items[index],
                      source: 2,
                    );
                  },
                  itemCount: _items.length,
                ),
              )),
    );
  }

如果项目列表的长度为1或2或任何不需要滚动的数量,刷新指示器也应该工作.

推荐答案

将物理设置为AlwaysScrollableScrollPhysics,就像下面的代码一样.

new RefreshIndicator(
    key: _refreshIndicatorKey,
    color: Colors.blue,
    onRefresh: (){
        setState(() {
            _future = fetchPosts(http.Client()); 
            _getAvalailableSlots();
        });
    },
    child: ListView.builder(
        physics: AlwaysScrollableScrollPhysics(),
        itemCount: data.length,
        itemBuilder: (context, i) {
            //do something
        }
    )
)

Flutter相关问答推荐

try 使用共享首选项存储用户数据时出错

获取屏幕大小的滚动视图与动态大小?

我如何才能收到每天重复的预定通知?

MobX Build_Runner问题:不生成.G文件(Flutter )

出现异常.RangeError(RangeError(index):无效值:有效值范围为空:0).分度误差

Flutter 应用程序中的Firebase实时数据库中的orderByChild()不适用于我

ReCAPTCHA Enterprise中的严重安全漏洞

如何删除使用isscllable时出现的左边距?

为什么当我使用Riverpod更新状态时,列表会被刷新?

Flutter类调用另一个类中的另一个方法失败

Flutter Riverpod 对提供者状态的变化做出react

在 Flutter 中显示有关提供者通知的对话框

如何流畅切换画面?

如何让多个图标转到不同的网址

我几乎每次都将 Stateless Widget 与 BLoC 一起使用.我错了吗?

Flutter 活跃的互联网连接

主题:ThemeData() Flutter

在 FAB 上添加表格小部件单击 FLUTTER

将容器扩展到安全区域 - Flutter

Firebase Firestore 查询