xuelongqy / flutter_easy_refresh

A flutter widget that provides pull-down refresh and pull-up load.
https://xuelongqy.github.io/flutter_easy_refresh/
MIT License
3.92k stars 636 forks source link

请问是否有适合web的滑动到底部自动加载更多? #626

Closed sunjianan9900 closed 2 years ago

sunjianan9900 commented 2 years ago

目前用在web上时,加载更多比较不符合web的体验,需要向上拽一下。

如果希望滑动到底部(甚至到一半)的时候自动触发加载更多,目前可以实现吗?

xuelongqy commented 2 years ago

可以实现,设置无限滚动的偏移量即可

sunjianan9900 commented 2 years ago

可以实现,设置无限滚动的偏移量即可

是说的 callLoadOverOffset 这个参数吗? 我设置0.1 或者 30,或者比较大的值,也没有效果 我看说配合refreshController.callLoad()使用,我设置一个按钮,点击后执行 refreshController.callLoad() 是可以加载 但是并不是滑动到底部就加载

所以要自己实现下滑动到底部调用 refreshController.callLoad() 是么

xuelongqy commented 2 years ago

有使用案例吗?

xuelongqy commented 2 years ago

需要在Footer中设置

sunjianan9900 commented 2 years ago
EasyRefresh(
                    key: flowKey,
                    controller: state.refreshController,
                    header: const MaterialHeader(),
                    footer: const MaterialFooter(
                        triggerOffset: 50,
                    ),
                    onRefresh: () async {
                      debugPrint("Refresh");
                      state.documents = [];
                      state.page = 0;
                      await logic.loadData();
                      state.refreshController.finishRefresh();
                    },
                    onLoad: () async {
                      await logic.loadData();
                      state.refreshController.finishLoad();
                    },
                    simultaneously: true,
                    fit: StackFit.expand,

                    child: (state.documents.isNotEmpty)
                        ? MasonryGridView.count(
                            crossAxisCount: (Get.width > 1000) ? 6 : 2,
                            mainAxisSpacing: 30,
                            crossAxisSpacing: 18,
                            itemCount: state.documents.length,
                            shrinkWrap: true,
                            itemBuilder: (context, index) {
                              return FlowPage(
                                document: state.documents[index],
                              );
                            })
                        : const SizedBox(
                            height: 100,
                            child: Text("No context"),
                          ),
                  )
xuelongqy commented 2 years ago

你看看示例中有你描述的这个功能吗?

sunjianan9900 commented 2 years ago

你看看示例中有你描述的这个功能吗?

我看了在线demo页面,没有滑动到底部自动加载的情况,都是需要鼠标去拽的

xuelongqy commented 2 years ago

对了,Flutter的web不支持滚轮越界,所以不能触发。不过可以试试监听ScrollController列表偏移量,这个应该是可行的

xuelongqy commented 2 years ago

后续可以给callLoad加一个只触发不滚动的参数

sunjianan9900 commented 2 years ago

对了,Flutter的web不支持滚轮越界,所以不能触发。不过可以试试监听ScrollController列表偏移量,这个应该是可行的

好的,谢谢~