fix: resolve navigation-cache regressions and todo UX

This commit is contained in:
qzl
2026-03-20 16:45:08 +08:00
parent 3f1858d733
commit 55f3805ee9
15 changed files with 160 additions and 105 deletions
@@ -29,6 +29,7 @@ class _TodoDetailScreenState extends State<TodoDetailScreen> {
TodoResponse? _todo;
bool _isLoading = true;
bool _didMutate = false;
String? _error;
@override
@@ -122,7 +123,7 @@ class _TodoDetailScreenState extends State<TodoDetailScreen> {
Widget _buildHeader() {
return BackTitlePageHeader(
title: '待办详情',
onBack: () => context.pop(),
onBack: () => context.pop(_didMutate),
trailing: _buildHeaderMenu(),
);
}
@@ -379,10 +380,11 @@ class _TodoDetailScreenState extends State<TodoDetailScreen> {
}
final changed = await context.push<bool>(AppRoutes.todoEdit(_todo!.id));
if (changed == true) {
await _loadTodo();
if (mounted && _error != null) {
Toast.show(context, '刷新失败: $_error', type: ToastType.error);
_didMutate = true;
if (!mounted) {
return;
}
context.pop(true);
}
}
@@ -398,7 +400,7 @@ class _TodoDetailScreenState extends State<TodoDetailScreen> {
try {
await _todoApi.deleteTodo(_todo!.id);
if (mounted) {
context.pop();
context.pop(true);
}
} catch (e) {
if (mounted) {