From abe09f530bee943a18a55627f45a9c95546359b3 Mon Sep 17 00:00:00 2001 From: quecai-niu Date: Sat, 11 Jul 2026 15:07:06 +0800 Subject: [PATCH 1/2] Show transaction time down to seconds --- lib/providers/theme_providers.dart | 8 ++++---- lib/widgets/biz/amount_editor_sheet.dart | 14 +++++++++++++- lib/widgets/biz/transaction_list_item.dart | 6 +++--- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/lib/providers/theme_providers.dart b/lib/providers/theme_providers.dart index b68f51a6b..2c6f3aa6b 100644 --- a/lib/providers/theme_providers.dart +++ b/lib/providers/theme_providers.dart @@ -176,10 +176,10 @@ final compactAmountInitProvider = FutureProvider((ref) async { }); }); -// 显示交易时间Provider(默认不显示) +// 显示交易时间Provider(默认显示到秒) // false = 只显示日期 -// true = 显示日期和时间(时:分) -final showTransactionTimeProvider = StateProvider((ref) => false); +// true = 在明细行显示交易时间(时:分:秒) +final showTransactionTimeProvider = StateProvider((ref) => true); // 显示交易时间持久化初始化 final showTransactionTimeInitProvider = FutureProvider((ref) async { @@ -357,4 +357,4 @@ void _pushDisplayNameToCloud(Ref ref, String name) { 'push display name failed (non-blocking): $e', st); } }()); -} \ No newline at end of file +} diff --git a/lib/widgets/biz/amount_editor_sheet.dart b/lib/widgets/biz/amount_editor_sheet.dart index 046389e19..9c9799dce 100644 --- a/lib/widgets/biz/amount_editor_sheet.dart +++ b/lib/widgets/biz/amount_editor_sheet.dart @@ -359,7 +359,19 @@ class _AmountEditorSheetState extends ConsumerState { initial: _date, maxDate: DateTime.now(), ); - if (res != null) setState(() => _date = res); + if (res != null) { + final merged = DateTime( + res.year, + res.month, + res.day, + _date.hour, + _date.minute, + _date.second, + ); + final now = DateTime.now(); + // 只改日期时保留原来的时分秒;如果新日期是今天且时间超过当前时间,回退到现在。 + setState(() => _date = merged.isAfter(now) ? now : merged); + } } else { // 普通模式,只选择日期 final res = await showWheelDatePicker( diff --git a/lib/widgets/biz/transaction_list_item.dart b/lib/widgets/biz/transaction_list_item.dart index e8df74d90..857537978 100644 --- a/lib/widgets/biz/transaction_list_item.dart +++ b/lib/widgets/biz/transaction_list_item.dart @@ -25,13 +25,13 @@ class TransactionListItem extends ConsumerWidget { final String? ledgerName; // 账本名称(仅"全部账本"模式下显示标签) final VoidCallback? onDelete; // 删除回调 final String? accountName; // 账户名称,用于显示 - final DateTime? happenedAt; // 交易时间,用于显示时分 + final DateTime? happenedAt; // 交易时间,用于显示时分秒 // 批量选择模式相关 final bool isSelectionMode; // 是否处于选择模式 final bool isSelected; // 是否被选中 final VoidCallback? onSelectionChanged; // 选中状态改变回调 - final bool showFullDate; // 是否显示完整日期(年-月-日 时:分) + final bool showFullDate; // 是否显示完整日期(年-月-日 时:分:秒) // 标签相关 final List<({int id, String name, String? color})>? tags; // 关联的标签 @@ -122,7 +122,7 @@ class TransactionListItem extends ConsumerWidget { // 完整日期模式 parts.add( '${happenedAt!.year}-${happenedAt!.month.toString().padLeft(2, '0')}-${happenedAt!.day.toString().padLeft(2, '0')} ' - '${happenedAt!.hour.toString().padLeft(2, '0')}:${happenedAt!.minute.toString().padLeft(2, '0')}', + '${happenedAt!.hour.toString().padLeft(2, '0')}:${happenedAt!.minute.toString().padLeft(2, '0')}:${happenedAt!.second.toString().padLeft(2, '0')}', ); } else if (ref.watch(showTransactionTimeProvider) && (happenedAt!.hour != 0 || happenedAt!.minute != 0 || happenedAt!.second != 0)) { From 1806ee405637f284bddf736e959d3dca30705134 Mon Sep 17 00:00:00 2001 From: quecai-niu Date: Sun, 12 Jul 2026 00:07:09 +0800 Subject: [PATCH 2/2] =?UTF-8?q?v0.01=201=E3=80=81=E6=81=A2=E5=A4=8D?= =?UTF-8?q?=E4=BA=A4=E6=98=93=E6=97=B6=E9=97=B4=E9=BB=98=E8=AE=A4=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E5=B9=B6=E4=BF=9D=E7=95=99=E7=94=A8=E6=88=B7=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E7=9A=84=E6=97=B6=E5=88=86=E7=A7=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/providers/theme_providers.dart | 4 ++-- lib/widgets/biz/amount_editor_sheet.dart | 15 ++------------- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/lib/providers/theme_providers.dart b/lib/providers/theme_providers.dart index 2c6f3aa6b..a67c970e0 100644 --- a/lib/providers/theme_providers.dart +++ b/lib/providers/theme_providers.dart @@ -176,10 +176,10 @@ final compactAmountInitProvider = FutureProvider((ref) async { }); }); -// 显示交易时间Provider(默认显示到秒) +// 显示交易时间Provider(默认不显示) // false = 只显示日期 // true = 在明细行显示交易时间(时:分:秒) -final showTransactionTimeProvider = StateProvider((ref) => true); +final showTransactionTimeProvider = StateProvider((ref) => false); // 显示交易时间持久化初始化 final showTransactionTimeInitProvider = FutureProvider((ref) async { diff --git a/lib/widgets/biz/amount_editor_sheet.dart b/lib/widgets/biz/amount_editor_sheet.dart index 9c9799dce..8f3c99c98 100644 --- a/lib/widgets/biz/amount_editor_sheet.dart +++ b/lib/widgets/biz/amount_editor_sheet.dart @@ -359,19 +359,8 @@ class _AmountEditorSheetState extends ConsumerState { initial: _date, maxDate: DateTime.now(), ); - if (res != null) { - final merged = DateTime( - res.year, - res.month, - res.day, - _date.hour, - _date.minute, - _date.second, - ); - final now = DateTime.now(); - // 只改日期时保留原来的时分秒;如果新日期是今天且时间超过当前时间,回退到现在。 - setState(() => _date = merged.isAfter(now) ? now : merged); - } + // res(选择结果)已经包含用户选定的年、月、日、时、分、秒。 + if (res != null) setState(() => _date = res); } else { // 普通模式,只选择日期 final res = await showWheelDatePicker(