Flutter RefreshIndicator 下拉刷新

 

RefreshIndicator FlutterSDK提供的下拉刷新组件,但是没有上拉加载,需要上拉加载可查看 下拉刷新上拉加载Demo。

大家知道,所有的Scrollable都是可滚动的,但是如果没有足够内容,Scrollable是不可滚动的。Scrollable不可滚动时RefreshIndicator下拉功能不可用。这时官方告诉我们要将Scrollable的physics属性设置为AlwaysScrollableScrollPhysics。

参数详解

属性说明
child子组件
displacement下拉距离,根据这个距离判定刷新执行。默认40.0
onRefresh下拉监听
color刷新进度指示器的前景色
backgroundColor刷新进度指示器的背景色
notificationPredicate是否应处理滚动通知的检查(是否通知下拉刷新动作)
semanticsLabel标记此进度指示器(未知作用)
semanticsValue此进度指示器的值(未知作用)
  

代码示例

class _MyHomeState extends State<MyHome> {
  //数据列表
  List list = new List();
  int x = 0;

  // 初始化数据
  @override
  void initState() {
    super.initState();
    getData('初始化数据');
  }

  /*
   * 获取数据
   */
  Future getData(String s) async {
    await Future.delayed(Duration(seconds: 2), () {
      setState(() {
        list = List.generate(20, (i) => '$s $i');
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('RefreshIndicator 下拉刷新'),),
      body: RefreshIndicator(
        child:ListView.builder(
          itemCount: list.length,
          itemBuilder: (BuildContext context, int index) {
            return ListTile(
              title: Text(this.list[index]),
            );
          },
        ),
        onRefresh:_onRefresh,
        // displacement:30,
        color:Colors.red,
        backgroundColor:Colors.green,
        // notificationPredicate:,
        semanticsLabel:'哈哈',
        semanticsValue:'sdfjnlsdjf',
      ),
    );
  }

  // 下拉监听 处理
  Future<Null> _onRefresh() async {
    x++;
    await Future.delayed(Duration(seconds: 3), () {
      print('refresh');
      setState(() {
        list = List.generate(20, (i) => '第 $x 次刷新后数据 $i');
      });
    });
  }

}

效果图

完整代码

查看完整代码

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马志武

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值