59 lines
1.5 KiB
Dart
59 lines
1.5 KiB
Dart
// Author: fengshengxiong
|
|
// Date: 2024/5/7
|
|
// Description: 下拉刷新、上拉加载
|
|
|
|
import 'dart:async';
|
|
import 'package:easy_refresh/easy_refresh.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
import 'package:hello_wallpaper/common/components/view_state_widget.dart';
|
|
|
|
class BaseEasyRefresh extends StatelessWidget {
|
|
const BaseEasyRefresh({
|
|
super.key,
|
|
required this.controller,
|
|
this.header,
|
|
this.footer,
|
|
this.onRefresh,
|
|
this.onLoad,
|
|
this.refreshOnStart = false,
|
|
required this.viewState,
|
|
required this.child,
|
|
this.width,
|
|
this.height,
|
|
});
|
|
|
|
final EasyRefreshController controller;
|
|
final Header? header;
|
|
final Footer? footer;
|
|
final FutureOr Function()? onRefresh;
|
|
final FutureOr Function()? onLoad;
|
|
final bool refreshOnStart;
|
|
final ViewState viewState;
|
|
final Widget child;
|
|
final double? width;
|
|
final double? height;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return EasyRefresh(
|
|
controller: controller,
|
|
header: header ?? const ClassicHeader(),
|
|
footer: footer ?? const ClassicFooter(),
|
|
onRefresh: onRefresh,
|
|
onLoad: onLoad,
|
|
refreshOnStart: refreshOnStart,
|
|
child: viewState == ViewState.normal ? child : SingleChildScrollView(
|
|
child: SizedBox(
|
|
width: width ?? 1.sw,
|
|
height: height ?? 300.h,
|
|
child: ViewStateWidget(
|
|
viewState: viewState,
|
|
child: child,
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|