本次提交包含多项迭代优化和问题修复: 1. 新增缩略图图片组件、数字格式化工具类,补充多语言翻译类型与本地化支持 2. 优化底部导航栏主题色统一使用动态accent色值 3. 修复多处图表动画、路由跳转、API请求相关问题 4. 简化服务器公告文案,调整默认分屏状态为关闭 5. 新增安卓/iOS桌面快捷方式配置 6. 重构多处状态管理类使用SafeNotifierInit统一异常保护 7. 替换硬编码蓝色为主题色,更新版本号获取方式为动态读取 8. 优化缓存预加载逻辑,移除无用代码 9. 调整默认设置项,优化用户体验细节
93 lines
2.4 KiB
Dart
93 lines
2.4 KiB
Dart
/// ============================================================
|
|
/// 闲言APP — 安全初始化 Mixin
|
|
/// 创建时间: 2026-05-30
|
|
/// 更新时间: 2026-05-30
|
|
/// 作用: 为 Provider/Notifier 的 _init() 方法提供统一异常保护
|
|
/// 上次更新: 初始创建,支持 AsyncNotifier/Notifier/ChangeNotifier
|
|
/// ============================================================
|
|
|
|
import 'package:xianyan/core/utils/logger.dart';
|
|
|
|
/// 安全初始化 Mixin — 适用于 Riverpod AsyncNotifier 子类
|
|
///
|
|
/// 使用方式:
|
|
/// ```dart
|
|
/// class MyNotifier extends AsyncNotifier<MyState> with SafeAsyncInit {
|
|
/// @override
|
|
/// MyState build() {
|
|
/// safeInit(_init);
|
|
/// return const MyState();
|
|
/// }
|
|
///
|
|
/// Future<void> _init() async { ... }
|
|
/// }
|
|
/// ```
|
|
mixin SafeAsyncInit {
|
|
/// 安全执行初始化,捕获所有异常并记录日志
|
|
Future<void> safeInit(Future<void> Function() init, {String? label}) async {
|
|
try {
|
|
await init();
|
|
} catch (e, stack) {
|
|
Log.e('${label ?? runtimeType}._init 失败', e, stack);
|
|
}
|
|
}
|
|
}
|
|
|
|
/// 安全初始化 Mixin — 适用于 Riverpod Notifier 子类
|
|
///
|
|
/// 使用方式:
|
|
/// ```dart
|
|
/// class MyNotifier extends Notifier<MyState> with SafeNotifierInit {
|
|
/// @override
|
|
/// MyState build() {
|
|
/// safeNotifierInit(_init);
|
|
/// return const MyState();
|
|
/// }
|
|
///
|
|
/// Future<void> _init() async { ... }
|
|
/// }
|
|
/// ```
|
|
mixin SafeNotifierInit {
|
|
/// 安全调度初始化,捕获所有异常并记录日志
|
|
void safeNotifierInit(
|
|
Future<void> Function() init, {
|
|
String? label,
|
|
}) {
|
|
Future.microtask(() async {
|
|
try {
|
|
await init();
|
|
} catch (e, stack) {
|
|
Log.e('${label ?? runtimeType}._init 失败', e, stack);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
/// 安全初始化 Mixin — 适用于 ChangeNotifier 子类
|
|
///
|
|
/// 使用方式:
|
|
/// ```dart
|
|
/// class MyProvider extends ChangeNotifier with SafeChangeNotifierInit {
|
|
/// MyProvider() {
|
|
/// safeChangeInit(_init);
|
|
/// }
|
|
///
|
|
/// Future<void> _init() async { ... }
|
|
/// }
|
|
/// ```
|
|
mixin SafeChangeNotifierInit {
|
|
/// 安全调度初始化,捕获所有异常并记录日志
|
|
void safeChangeInit(
|
|
Future<void> Function() init, {
|
|
String? label,
|
|
}) {
|
|
Future.microtask(() async {
|
|
try {
|
|
await init();
|
|
} catch (e, stack) {
|
|
Log.e('${label ?? runtimeType}._init 失败', e, stack);
|
|
}
|
|
});
|
|
}
|
|
}
|