当ListView的内容未超过viewPort时(这意味着它尚未可滚动),RefreshIndicator不可用

时间:2019-07-10 03:43:13

标签: flutter

我有RefreshIndicator,里面有一个ListView。当ListView的内容没有超过viewPort时(这意味着它尚不能滚动),RefreshIndicator不可用。 令人惊讶的是,当我删除controllerphysics时,RefreshIndicator起作用 但是我的代码必须在_scrollController上侦听,因此无法将其删除,因此还有其他解决方法

child: RefreshIndicator(
          color: WColors.theme_color,
          child: ListView.builder(
            controller: _scrollController,
            physics: BouncingScrollPhysics(),
            shrinkWrap: false,
            itemBuilder: (BuildContext context, int index) {
              if (datas == null || datas.length == 0) {
                return Container(
                  height: pt(400),
                  alignment: Alignment.center,
                  child: datas == null
                      ? CupertinoActivityIndicator()
                      : Text(
                          res.allEmpty,
                          style: TextStyle(fontSize: 18),
                        ),
                );
              } else {
                if (index != datas.length) {
                  return TodoItem(
                    index,
                    datas[index],
                  );
                } else {
                  return Container(
                    width: double.infinity,
                    height: pt(45),
                    alignment: Alignment.center,
                    child: (currentPage < totalPage)
                        ? CupertinoActivityIndicator()
                        : Text(
                            res.isBottomst,
                            style: TextStyle(color: WColors.hint_color),
                          ),
                  );
                }
              }
            },
            itemCount:
                (datas == null || datas.length == 0) ? 1 : datas.length + 1,
          ),
          onRefresh: _refreshAuto),
    );

1 个答案:

答案 0 :(得分:0)

如果您想始终使用RefreshIndicator,即使您的列表很小,也只需用physics替换您正在使用的AlwaysScrollableScrollPhysics()

ListView.builder(
            controller: _scrollController,
            physics: const AlwaysScrollableScrollPhysics()
            shrinkWrap: false,
            itemBuilder: (BuildContext context, int index) {