fix(app): 18 处 catch(e) 添加 debugPrint 异常日志

- parent_bloc: 6 处 (LoadChildren/BindChild/ViewJournals/ExportData/DeleteData/UnbindChild)
- search_bloc: 3 处 (SearchByMood/SearchByTag/SearchByKeyword)
- achievement_bloc: 1 处 (_fetchAchievements)
- sticker_bloc: 2 处 (_fetchPacks/fetchStickersInPack)
- template_bloc: 1 处 (_fetchTemplates)
- mood_bloc: 1 处 (_loadStats)
- home_bloc: 1 处 (_onLoadData)
- calendar_bloc: 1 处 (_onMonthChanged)
- sync_engine: 1 处 (trySync)
- weekly_page: 已有 debugPrint,无需修改
This commit is contained in:
iven
2026-06-02 23:21:16 +08:00
parent c92ead60e3
commit e57c3427a4
9 changed files with 24 additions and 0 deletions

View File

@@ -196,6 +196,7 @@ class SyncEngine {
_lastError = '同步中断:网络不可用'; _lastError = '同步中断:网络不可用';
return; return;
} catch (e) { } catch (e) {
debugPrint('SyncEngine.trySync 操作失败: $e');
// 操作失败,增加重试计数 // 操作失败,增加重试计数
final retried = operation.copyWith(retryCount: operation.retryCount + 1); final retried = operation.copyWith(retryCount: operation.retryCount + 1);

View File

@@ -1,5 +1,6 @@
// 成就 BLoC — 通过 API 加载成就列表 // 成就 BLoC — 通过 API 加载成就列表
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:nuanji_app/data/remote/api_client.dart'; import 'package:nuanji_app/data/remote/api_client.dart';
@@ -98,6 +99,7 @@ class AchievementBloc extends ChangeNotifier {
_state = _state.copyWith(isLoading: false, achievements: achievements); _state = _state.copyWith(isLoading: false, achievements: achievements);
} catch (e) { } catch (e) {
debugPrint('AchievementBloc._fetchAchievements 失败: $e');
_state = _state.copyWith( _state = _state.copyWith(
isLoading: false, isLoading: false,
errorMessage: '加载成就列表失败', errorMessage: '加载成就列表失败',

View File

@@ -1,5 +1,6 @@
// 日历 BLoC — 管理日历视图状态,通过 JournalRepository 加载数据 // 日历 BLoC — 管理日历视图状态,通过 JournalRepository 加载数据
import 'package:flutter/foundation.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:nuanji_app/data/models/journal_entry.dart'; import 'package:nuanji_app/data/models/journal_entry.dart';
import 'package:nuanji_app/data/repositories/journal_repository.dart'; import 'package:nuanji_app/data/repositories/journal_repository.dart';
@@ -136,6 +137,7 @@ class CalendarBloc extends Bloc<CalendarEvent, CalendarState> {
)); ));
} }
} catch (e) { } catch (e) {
debugPrint('CalendarBloc._onMonthChanged 失败: $e');
if (state is CalendarLoaded) { if (state is CalendarLoaded) {
emit((state as CalendarLoaded).copyWith(isLoading: false)); emit((state as CalendarLoaded).copyWith(isLoading: false));
} }

View File

@@ -1,5 +1,6 @@
// 首页 BLoC — 加载最近日记和心情概览 // 首页 BLoC — 加载最近日记和心情概览
import 'package:flutter/foundation.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:nuanji_app/data/models/journal_entry.dart'; import 'package:nuanji_app/data/models/journal_entry.dart';
import 'package:nuanji_app/data/repositories/journal_repository.dart'; import 'package:nuanji_app/data/repositories/journal_repository.dart';
@@ -141,6 +142,7 @@ class HomeBloc extends Bloc<HomeEvent, HomeState> {
todayWeather: todayWeather, todayWeather: todayWeather,
)); ));
} catch (e) { } catch (e) {
debugPrint('HomeBloc._onLoadData 失败: $e');
emit(const HomeLoaded()); // 空状态而非错误,离线友好 emit(const HomeLoaded()); // 空状态而非错误,离线友好
} }
} }

View File

@@ -138,6 +138,7 @@ class MoodBloc extends ChangeNotifier {
), ),
); );
} catch (e) { } catch (e) {
debugPrint('MoodBloc._loadStats 失败: $e');
_state = _state.copyWith( _state = _state.copyWith(
isLoading: false, isLoading: false,
errorMessage: '加载统计数据失败', errorMessage: '加载统计数据失败',

View File

@@ -3,6 +3,7 @@
// 状态机: ParentInitial → ParentLoading → ParentChildrenLoaded / ParentJournalsLoaded / ParentDataExported / ParentDataDeleted / ParentError // 状态机: ParentInitial → ParentLoading → ParentChildrenLoaded / ParentJournalsLoaded / ParentDataExported / ParentDataDeleted / ParentError
// API: /diary/parent/* 端点 // API: /diary/parent/* 端点
import 'package:flutter/foundation.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import '../../../data/remote/api_client.dart'; import '../../../data/remote/api_client.dart';
@@ -40,6 +41,7 @@ class ParentBloc extends Bloc<ParentEvent, ParentState> {
.toList(); .toList();
emit(ParentChildrenLoaded(children)); emit(ParentChildrenLoaded(children));
} catch (e) { } catch (e) {
debugPrint('ParentBloc._onLoadChildren 失败: $e');
emit(const ParentError('加载孩子列表失败')); emit(const ParentError('加载孩子列表失败'));
} }
} }
@@ -57,6 +59,7 @@ class ParentBloc extends Bloc<ParentEvent, ParentState> {
// 绑定成功后重新加载列表 // 绑定成功后重新加载列表
add(const ParentLoadChildren()); add(const ParentLoadChildren());
} catch (e) { } catch (e) {
debugPrint('ParentBloc._onBindChild 失败: $e');
emit(const ParentError('绑定失败,请检查孩子 ID')); emit(const ParentError('绑定失败,请检查孩子 ID'));
} }
} }
@@ -83,6 +86,7 @@ class ParentBloc extends Bloc<ParentEvent, ParentState> {
journals: items.cast<Map<String, dynamic>>(), journals: items.cast<Map<String, dynamic>>(),
)); ));
} catch (e) { } catch (e) {
debugPrint('ParentBloc._onViewJournals 失败: $e');
emit(const ParentError('加载日记失败')); emit(const ParentError('加载日记失败'));
} }
} }
@@ -103,6 +107,7 @@ class ParentBloc extends Bloc<ParentEvent, ParentState> {
data: response.data as Map<String, dynamic>, data: response.data as Map<String, dynamic>,
)); ));
} catch (e) { } catch (e) {
debugPrint('ParentBloc._onExportData 失败: $e');
emit(const ParentError('导出失败')); emit(const ParentError('导出失败'));
} }
} }
@@ -119,6 +124,7 @@ class ParentBloc extends Bloc<ParentEvent, ParentState> {
}); });
emit(ParentDataDeleted(event.childId)); emit(ParentDataDeleted(event.childId));
} catch (e) { } catch (e) {
debugPrint('ParentBloc._onDeleteData 失败: $e');
emit(const ParentError('删除失败')); emit(const ParentError('删除失败'));
} }
} }
@@ -134,6 +140,7 @@ class ParentBloc extends Bloc<ParentEvent, ParentState> {
}); });
add(const ParentLoadChildren()); add(const ParentLoadChildren());
} catch (e) { } catch (e) {
debugPrint('ParentBloc._onUnbindChild 失败: $e');
emit(const ParentError('解绑失败')); emit(const ParentError('解绑失败'));
} }
} }

View File

@@ -3,6 +3,7 @@
// 状态机: SearchInitial → SearchLoading → SearchLoaded/SearchError // 状态机: SearchInitial → SearchLoading → SearchLoaded/SearchError
// 支持关键词搜索、标签筛选、心情筛选、结果分类 tab。 // 支持关键词搜索、标签筛选、心情筛选、结果分类 tab。
import 'package:flutter/foundation.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import '../../../data/models/journal_entry.dart'; import '../../../data/models/journal_entry.dart';
@@ -50,6 +51,7 @@ class SearchBloc extends Bloc<SearchEvent, SearchState> {
searchHistory: List.unmodifiable(_searchHistory), searchHistory: List.unmodifiable(_searchHistory),
)); ));
} catch (e) { } catch (e) {
debugPrint('SearchBloc._onSearchByMood 失败: $e');
emit(const SearchError('搜索失败,请重试')); emit(const SearchError('搜索失败,请重试'));
} }
} }
@@ -73,6 +75,7 @@ class SearchBloc extends Bloc<SearchEvent, SearchState> {
searchHistory: List.unmodifiable(_searchHistory), searchHistory: List.unmodifiable(_searchHistory),
)); ));
} catch (e) { } catch (e) {
debugPrint('SearchBloc._onSearchByTag 失败: $e');
emit(const SearchError('搜索失败,请重试')); emit(const SearchError('搜索失败,请重试'));
} }
} }
@@ -113,6 +116,7 @@ class SearchBloc extends Bloc<SearchEvent, SearchState> {
searchHistory: List.unmodifiable(_searchHistory), searchHistory: List.unmodifiable(_searchHistory),
)); ));
} catch (e) { } catch (e) {
debugPrint('SearchBloc._onSearchByKeyword 失败: $e');
emit(const SearchError('搜索失败,请重试')); emit(const SearchError('搜索失败,请重试'));
} }
} }

View File

@@ -1,5 +1,6 @@
// 贴纸 BLoC — 通过 API 加载贴纸包和贴纸数据 // 贴纸 BLoC — 通过 API 加载贴纸包和贴纸数据
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:nuanji_app/data/remote/api_client.dart'; import 'package:nuanji_app/data/remote/api_client.dart';
@@ -168,6 +169,7 @@ class StickerBloc extends ChangeNotifier {
_state = _state.copyWith(isLoading: false, packs: packs); _state = _state.copyWith(isLoading: false, packs: packs);
} catch (e) { } catch (e) {
debugPrint('StickerBloc._fetchPacks 失败: $e');
_state = _state.copyWith( _state = _state.copyWith(
isLoading: false, isLoading: false,
errorMessage: '加载贴纸包失败', errorMessage: '加载贴纸包失败',
@@ -194,6 +196,7 @@ class StickerBloc extends ChangeNotifier {
); );
}).toList(); }).toList();
} catch (e) { } catch (e) {
debugPrint('StickerBloc.fetchStickersInPack 失败: $e');
return []; return [];
} }
} }

View File

@@ -1,5 +1,6 @@
// 模板 BLoC — 通过 API 加载模板列表 // 模板 BLoC — 通过 API 加载模板列表
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:nuanji_app/data/remote/api_client.dart'; import 'package:nuanji_app/data/remote/api_client.dart';
@@ -125,6 +126,7 @@ class TemplateBloc extends ChangeNotifier {
_state = _state.copyWith(isLoading: false, templates: templates); _state = _state.copyWith(isLoading: false, templates: templates);
} catch (e) { } catch (e) {
debugPrint('TemplateBloc._fetchTemplates 失败: $e');
_state = _state.copyWith( _state = _state.copyWith(
isLoading: false, isLoading: false,
errorMessage: '加载模板列表失败', errorMessage: '加载模板列表失败',