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 Function(); typedef LoadMoreCallback = Future Function(); typedef ItemBuilder = Widget Function(BuildContext context, T item, int index); class CommonListView extends StatelessWidget { final List items; final ItemBuilder 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), ); }, ); } }