68 lines
1.7 KiB
Dart
68 lines
1.7 KiB
Dart
import 'package:easy_refresh/easy_refresh.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
Widget buildEasyRefresh({
|
|
required EasyRefreshController freshController,
|
|
required Future<void> Function()? onRefresh,
|
|
required Future<void> Function()? onLoad,
|
|
required Widget body,
|
|
}) {
|
|
return EasyRefresh(
|
|
controller: freshController,
|
|
header: ClassicHeader(
|
|
dragText: '下拉刷新',
|
|
armedText: '释放刷新',
|
|
readyText: '准备刷新',
|
|
processingText: '刷新中...',
|
|
processedText: '刷新完成',
|
|
failedText: '刷新失败',
|
|
noMoreText: '没有更多数据',
|
|
showText: true,
|
|
messageText: '更新于 %T',
|
|
showMessage: true,
|
|
),
|
|
footer: ClassicFooter(
|
|
dragText: '上拉加载',
|
|
armedText: '释放加载',
|
|
readyText: '准备加载',
|
|
processingText: '加载中...',
|
|
processedText: '加载完成',
|
|
failedText: '加载失败',
|
|
noMoreText: '没有更多数据',
|
|
showText: true,
|
|
messageText: '更新于 %T',
|
|
showMessage: true,
|
|
),
|
|
onRefresh: onRefresh,
|
|
onLoad: onLoad,
|
|
child: body,
|
|
);
|
|
}
|
|
|
|
Widget buildScrollToTop({
|
|
required BuildContext context,
|
|
required VoidCallback scrollToTop,
|
|
}) {
|
|
final colors = Theme.of(context).colorScheme;
|
|
|
|
return Positioned(
|
|
right: 0,
|
|
bottom: 80,
|
|
child: FloatingActionButton(
|
|
onPressed: scrollToTop,
|
|
backgroundColor: colors.primary,
|
|
elevation: 2,
|
|
mini: true,
|
|
child: Icon(Icons.arrow_upward, color: colors.surface),
|
|
),
|
|
);
|
|
}
|
|
|
|
void scrollToTopAnimateTo(ScrollController controller) {
|
|
controller.animateTo(
|
|
0,
|
|
duration: const Duration(milliseconds: 500), // 滚动动画时长
|
|
curve: Curves.easeInOut, // 滚动动画曲线
|
|
);
|
|
}
|