flutter上拉加載更多下拉刷新


在pubspec.yaml中
  pull_to_refresh: 1.6.3 
 
頁面中
 RefreshController _refreshController;
 int pageNo = 1;
  @override
  void initState() {
    super.initState();
    _refreshController = RefreshController(initialRefresh: false);
  }

  // 下拉刷新
  void _onRefresh() async {
    pageNo = 1;
  _refreshController.loadComplete();
  }

  // 上拉加載更多
  void _onLoading() async {
    pageNo++;
  _refreshController.loadComplete();
  }
RefreshConfiguration.copyAncestor(
        context: context,
        // Viewport不滿一屏時,禁用上拉加載更多功能,應該配置更靈活一些,比如說一頁條數大於等於總條數的時候設置或者總條數等於0
        hideFooterWhenNotFull: true,
        child: SmartRefresher(
          enablePullDown: true,
          enablePullUp: true,
          header: WaterDropHeader(),
          controller: _refreshController,
          onRefresh: _onRefresh,
          onLoading: _onLoading,
          child: CustomScrollView(
            slivers: [
              SliverList(
                delegate: SliverChildBuilderDelegate((BuildContext context, int i) {
                  return BListItem(
                    height: 50,
                    enableChecked: true,
                    title: data[i].name,
                    onTap: () => onTap(data[i]),
                    titleStyle: TextStyle(fontSize: 15, color: Colors.black),
                    isChecked: _activeCode == data[i].code,
                  );
                }, childCount: data?.length ?? 0),
              ),
            ],
          ),
        ),
      ),
 
需要注意的就是SmartRefresher的child需要直接加這種CustomScrollView或者listview等可滾動的組件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM