| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import 'package:easy_refresh/easy_refresh.dart';
- import 'package:flutter/material.dart';
- /// @author: bo.zeng
- /// @email: cnhbwds@gmail.com
- /// @date: 2025 2025/4/15 12:42
- /// @description:
- typedef RefreshCallback = Future<void> Function();
- typedef LoadMoreCallback = Future<void> Function();
- typedef ItemBuilder<T> =
- Widget Function(BuildContext context, T item, int index);
- class CommonListView<T> extends StatelessWidget {
- final List<T> items;
- final ItemBuilder<T> itemBuilder;
- final RefreshCallback? onRefresh;
- final LoadMoreCallback? onLoadMore;
- final bool hasMore;
- final Widget? emptyWidget;
- final EdgeInsetsGeometry? padding;
- const CommonListView({
- super.key,
- required this.items,
- required this.itemBuilder,
- this.onRefresh,
- this.onLoadMore,
- this.hasMore = true,
- this.emptyWidget,
- this.padding,
- });
- @override
- Widget build(BuildContext context) {
- return EasyRefresh.builder(
- onRefresh: onRefresh,
- onLoad: hasMore ? onLoadMore : null,
- childBuilder: (context, physics) {
- return items.isEmpty
- ? (emptyWidget ?? Center(child: Text('暂无数据')))
- : ListView.builder(
- padding: padding,
- physics: physics,
- itemCount: items.length,
- itemBuilder:
- (context, index) => itemBuilder(context, items[index], index),
- );
- },
- );
- }
- }
|