flutter 下拉刷新,上拉加载

  1. 基本属性
  const RefreshIndicator({
    Key key,
    @required this.child,
    this.displacement = 40.0,//指示器显示时距顶部位置
    @required this.onRefresh,//下拉刷新回调
    this.color,//指示器颜色,默认ThemeData.accentColor
    this.backgroundColor,//指示器背景颜色,默认ThemeData.canvasColor
    this.notificationPredicate = defaultScrollNotificationPredicate,
    this.semanticsLabel,
    this.semanticsValue,
  })

  1. 基础Widget
  ScrollController _scrollController = ScrollController(); //定义滚动Controller
  bool has_more = false; //是否还有下一页
  @override
  Widget build(BuildContext context) {
    return RefreshIndicator(
        backgroundColor: MyColor.t_E4E6EC,
        displacement: 0.h,
        color: MyColor.lineStartBtnColor,
        onRefresh: _onRefresh,
        child: SingleChildScrollView(
          scrollDirection: Axis.vertical,
            controller: _scrollController,
          child: Container(
              padding: EdgeInsets.symmetric(horizontal: 14.h),
              width: 258.h,
              child: Column(
                children: List.generate(taskList.length, (index) {
                  return taskItem(taskList[index]);
                }),
              )),
        ));
  }
  1. 下拉刷新
// 刷新
  Future<void> _onRefresh() async {
    await Future.delayed(Duration(seconds: 0), () {
		//TODO 执行刷新逻辑
 	});
  }
  1. 上拉加载更多
  void initState() {
    super.initState();
 _scrollController..addListener(() {
        //向上滚动
        if (_scrollController.position.pixels >
            _scrollController.position.maxScrollExtent - 20) {
			 if (has_more) { //是否还有下一页
			  //TODO
		       //监听滚动,执行加载下一页数据
			}
		}})}
		
		

你可能感兴趣的:(Flutter,flutter,上拉加载,下拉刷新)