快捷搜索: 王者荣耀 脱发

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
		       //监听滚动,执行加载下一页数据
			}
		}})}
经验分享 程序员 微信小程序 职场和发展