refactor(client): 日期选择统一为扁平组件——输入框+滚轮同宽居中入面板,桌面/移动全覆盖
- wheel_date_picker.dart 重构为统一组件:单日期 showDsDateDropdown(面板= 可输入框+三列滚轮+今天/确定)、范围 showDateRangeDropdown(起始|结束双窗格 并排+共用底栏);桌面锚定下拉(透明遮罩不冻结窗口)、窄屏底部 sheet 同内容 (范围纵排)——同一套窗格两端复用 - 扁平化:输入框与滚轮同宽 248、文字水平垂直居中(mono)、去掉全部阴影/立体 效果(滚轮外框仅 1px 边框,中心高亮带去描边) - DsDateCell(录单日期格)与 DatePickerField(登记收支)改为触发器:点选/ 回车打开统一面板,键入在面板内完成;出库工具栏时间 chip 补切到新组件 - 旧 showWheelDatePicker/showWheelDateRange 两步弹窗删除;组件测试改写为 新契约(触发器+面板键入+词法归一),表单 golden 随形态更新 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -228,8 +228,8 @@ class _StockOutListScreenState extends ConsumerState<StockOutListScreen> {
|
||||
n.setDetail(const {});
|
||||
}
|
||||
|
||||
Future<void> _pickDateRange() async {
|
||||
final range = await showWheelDateRange(context, initial: _dateRange);
|
||||
Future<void> _pickDateRange(BuildContext anchor) async {
|
||||
final range = await showDateRangeDropdown(anchor, initial: _dateRange);
|
||||
if (range == null) return;
|
||||
setState(() {
|
||||
_dateRange = range;
|
||||
@@ -240,9 +240,9 @@ class _StockOutListScreenState extends ConsumerState<StockOutListScreen> {
|
||||
}
|
||||
|
||||
/// 出库时间预设(对齐原型:全部时间/近7天/近30天/本月/自定义)。
|
||||
void _setDatePreset(String label) {
|
||||
void _setDatePreset(BuildContext anchor, String label) {
|
||||
if (label == '自定义…') {
|
||||
_pickDateRange();
|
||||
_pickDateRange(anchor);
|
||||
return;
|
||||
}
|
||||
final now = DateTime.now();
|
||||
@@ -871,12 +871,15 @@ class _StockOutListScreenState extends ConsumerState<StockOutListScreen> {
|
||||
},
|
||||
);
|
||||
|
||||
final dateChip = _MenuChip(
|
||||
label: '出库时间',
|
||||
value: _datePresetLabel.isEmpty ? null : _datePresetLabel,
|
||||
options: const ['全部时间', '近 7 天', '近 30 天', '本月', '自定义…'],
|
||||
onSelected: _setDatePreset,
|
||||
onClear: () => _setDatePreset('全部时间'),
|
||||
// anchorCtx = chip 自身位置:自定义范围下拉锚定在 chip 下方
|
||||
final dateChip = Builder(
|
||||
builder: (anchorCtx) => _MenuChip(
|
||||
label: '出库时间',
|
||||
value: _datePresetLabel.isEmpty ? null : _datePresetLabel,
|
||||
options: const ['全部时间', '近 7 天', '近 30 天', '本月', '自定义…'],
|
||||
onSelected: (v) => _setDatePreset(anchorCtx, v),
|
||||
onClear: () => _setDatePreset(anchorCtx, '全部时间'),
|
||||
),
|
||||
);
|
||||
|
||||
final advBtn = DsButton(
|
||||
|
||||
Reference in New Issue
Block a user