feat(client): 全列表下拉刷新 + 库存移动工具行移除
- DsTable 窄屏卡片流支持 onRefresh(RefreshIndicator,空态也可下拉)—— 等价桌面工具栏「刷新」;库存/入库/出库/往来/财务流水/用户/基础数据 全 tab 接线(基础数据下拉一并重拉五个 tab 数据源) - 库存移动端「盘点/表格视图/导出/列设置/刷新」工具行移除(2026-07-04 拍板:刷新改下拉手势、盘点入口在「我的」、其余桌面专属), 库存移动 golden 随更新 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -45,6 +45,9 @@ class DsTable extends StatefulWidget {
|
||||
// 仅文案分页(原型 partners/products 的 .pager 只有一行 span 文案,无翻页控件);
|
||||
// 与 total 互斥,total 为空且此值非空时生效。
|
||||
final String? pagerInfoText;
|
||||
|
||||
/// 窄屏卡片流下拉刷新(等价桌面工具栏「刷新」,2026-07-04 拍板);null 不启用。
|
||||
final Future<void> Function()? onRefresh;
|
||||
// 内嵌收缩模式(多区块滚动页里的表格卡,如 devices/settings):
|
||||
// 不用 Expanded 撑满、表格不带内部滚动,高度随内容。
|
||||
final bool shrinkWrap;
|
||||
@@ -62,6 +65,7 @@ class DsTable extends StatefulWidget {
|
||||
this.onPageSizeChanged,
|
||||
this.mobileCards,
|
||||
this.pagerInfoText,
|
||||
this.onRefresh,
|
||||
this.shrinkWrap = false,
|
||||
});
|
||||
|
||||
@@ -146,13 +150,27 @@ class _DsTableState extends State<DsTable> {
|
||||
|
||||
Widget _buildMobile(dynamic t) {
|
||||
final cards = widget.mobileCards!;
|
||||
if (cards.isEmpty) return _empty(t);
|
||||
return ListView.separated(
|
||||
padding: const EdgeInsets.all(12),
|
||||
itemCount: cards.length,
|
||||
separatorBuilder: (_, __) => const SizedBox(height: 10),
|
||||
itemBuilder: (_, i) => cards[i],
|
||||
);
|
||||
final Widget list = cards.isEmpty
|
||||
? (widget.onRefresh == null
|
||||
? _empty(t)
|
||||
// 空态也要可下拉:套一个总是可滚的 ListView
|
||||
: ListView(
|
||||
physics: const AlwaysScrollableScrollPhysics(),
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: 60),
|
||||
child: _empty(t)),
|
||||
],
|
||||
))
|
||||
: ListView.separated(
|
||||
padding: const EdgeInsets.all(12),
|
||||
physics: const AlwaysScrollableScrollPhysics(),
|
||||
itemCount: cards.length,
|
||||
separatorBuilder: (_, __) => const SizedBox(height: 10),
|
||||
itemBuilder: (_, i) => cards[i],
|
||||
);
|
||||
if (widget.onRefresh == null) return list;
|
||||
return RefreshIndicator(onRefresh: widget.onRefresh!, child: list);
|
||||
}
|
||||
|
||||
/// 收缩版卡片流(外层页面自带滚动)。
|
||||
|
||||
Reference in New Issue
Block a user