【问题标题】:Flutter : RefreshIndicator with ListView ScrollFlutter:带有 ListView Scroll 的 RefreshIndicator
【发布时间】:2022-01-06 09:23:50
【问题描述】:

我有 ListView。和 listview 有很多项目。滚动屏幕。(垂直) 如果滚动位置是顶部,我想 RefreshIndicator 工作。 我不知道我该怎么办..

现在,只有列表视图滚动有效。但是当滚动位置为 Top 时,RefreshIndicator 不起作用..

这是我的代码..

  @override


Widget build(BuildContext context) {
    return FutureBuilder<List<BoadModel>>(
      future: getData(),
      builder: (context, snapshot) {
        List<BoadModel> dataList = snapshot.data ?? [];
        if (snapshot.hasError) print(snapshot.error);
        return RefreshIndicator(
          onRefresh: () async {
            setState(() {});
          },
          child: SingleChildScrollView(
            child: Column(
              children: [
                Row(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                  children: [
                    Opacity(
                        opacity: 0.0,
                        child: ElevatedButton(
                            onPressed: () {}, child: Text("button"))),
                    Text(getCategoryName(widget.categoryPage)),
                    ElevatedButton(
                        onPressed: () {
                          Navigator.push(
                            context,
                            MaterialPageRoute(
                              builder: (context) => WriteBoadPage(
                                category: widget.categoryPage,
                              ),
                            ),
                          );
                        },
                        child: Text("글쓰기"))
                  ],
                ),
                snapshot.hasData
                    ? Column(
                        children: [
                          ListView.builder(
                            physics: NeverScrollableScrollPhysics(),
                            shrinkWrap: true,
                            itemCount: dataList.length,
                            itemBuilder: (BuildContext context, int index) {
                              return ListViewItem(
                                  title: dataList[index].title,
                                  nickname: dataList[index].nickname,
                                  time: dataList[index].time,
                                  view: dataList[index].view,
                                  commentCount: dataList[index].comment);
                            },
                          ),
                          Row(
                            children: [Text("dafs")],
                          )
                        ],
                      )
                    : Center(
                        child: CircularProgressIndicator(),
                      )
              ],
            ),
          ),
        );
      },
    );
  }

【问题讨论】:

    标签: flutter


    【解决方案1】:

    我找到了解决方案,但还有另一个问题。 问题是我有 SingleChildScrollView 已经在父小部件中,如下所示:

        return SingleChildScrollView( //have SingleChildScrollView already
          child: Column(
            children: [
              RefreshIndicator(
                  child: SingleChildScrollView(
                    child: ListView.builder(
                      itemBuilder: (BuildContext context, int index) {
                        return ListViewItem();
                      },
                    ),
                  ),
                  onRefresh: () async {}),
            ],
          ),
        );
    

    所以我做了如下所示:

        @override
          Widget build(BuildContext context) {
            return RefreshIndicator(
              child: SingleChildScrollView(
                child: Column(
                  children: [
                    ListView.builder(
                      itemBuilder: (BuildContext context, int index) {
                        return ListViewItem();
                      },
                    ),
                  ],
                ),
              ),
              onRefresh: () async {},
            );
    

    【讨论】:

      【解决方案2】:

      RefreshIndicatoronRefresh中你有没有添加一些类似下面链接的操作?

      RefreshIndicator

      【讨论】:

      • 将刷新指示器作为小部件的根。
      • 是的,但在他们的代码中 onRefresh 是 null ,我认为
      • 我的问题只是屏幕滚动。当滚动位置在顶部时,我想要 refreshIndicator。但只有我能看到顶部滚动动画
      • 好的,所以到现在你还看不到 refreshIndicator。我说的对吗?
      • 如果我使用物理:AlwaysScrollableScrollPhysics(),在 SingleChildScrollView 中,我可以看到 refreshIndicator。但无法滚动列表视图
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 2019-01-17
      • 2019-06-19
      • 2019-07-13
      • 2021-03-17
      • 2020-07-19
      相关资源
      最近更新 更多