flutter控件之Refresh

import 'dart:async';

import 'package:flutter/material.dart';
class LearnRefresh extends StatefulWidget{
  @override
  State<StatefulWidget> createState() {
    return new _LearnRefresh();
  }
}
class _LearnRefresh extends State<LearnRefresh>{

  bool isLoadMore=false; //防止在下拉过程中多次下拉多次请求
  ScrollController _scrollController=new ScrollController();
  int itemCountData=15;

  Future<Null> _handleRefresh() async {
    await Future.delayed(Duration(seconds: 1), () {//Future.delayed()方法可以选择延迟处理任务
      setState(() {
        print('开始刷新数据');
        itemCountData=0;
        itemCountData+=1;
        return null;
      });
    });
  }

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    _scrollController.addListener((){
      if(_scrollController.position.pixels==_scrollController.position.maxScrollExtent){
        if(!isLoadMore){
          setState(() {
            isLoadMore=true;
          });
          print('开始加载更多数据');
          setState(() {
            itemCountData+=1;
            isLoadMore=false;
          });
        }
      }
    });
  }

  @override
  void dispose() {
    // TODO: implement dispose
    super.dispose();
    _scrollController.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      body: new RefreshIndicator(
        color: Colors.white,
        backgroundColor: Colors.blue,
        child: new ListView.builder(
          itemBuilder: (BuildContext context, int index){
            print('$index');
            if(index==itemCountData){
              return new Container(
                padding: EdgeInsets.all(20.0),
                child: new Center(
                  child: new Text('加载中......'),
                ),
              );
            }else{
              return new ListTile(
                title: new Text('item******************$index*******************'),
              );
            }
          },
          itemCount: itemCountData+1,
          controller:_scrollController ,
        ),
        onRefresh: _handleRefresh,
      ),
    );
  }
}
1.gif
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容