用途:规范 Flutter 应用 main() 冷启动顺序,让启动快速、有序且不隐藏失败。
主要能力与规则:错误处理器最先安装,位于 WidgetsFlutterBinding.ensureInitialized() 之后、任何可能抛错的代码之前;只使用 FlutterError.onError 与 PlatformDispatcher.instance.onError 两个处理器,不使用 runZonedGuarded;PlatformDispatcher.onError 无条件返回 true;错误处理器内部用 try/catch 包裹,绝不让其自身抛错。主题、语言等首帧所需设置须在 runApp 前同步读取。真实基础设施在 bootstrap() 组合根中构建,通过 ProviderScope 的 overrideWithValue 注入,功能代码只见到会抛错的占位 provider。预热逻辑放到 addPostFrameCallback 并 unawaited,不在 main() 中 await。唯一允许阻塞启动的是打开数据库。用单个 WidgetsBindingObserver 在 inactive/paused 时刷写持久状态,resumed 时重读时间敏感状态。记录前先解包 ProviderException;按失败模型设置 Riverpod retry。
使用方式:按资料给出的 main() 顺序执行——ensureInitialized、CrashLog.open()、installErrorHandlers、bootstrap()、runApp(ProviderScope(overrides:…, child: App())),首帧后再触发预热。
适用场景:Flutter 应用冷启动、依赖注入、崩溃捕获与生命周期持久化。
限制:资料未提供具体安装命令、包版本或收费信息;示例代码需按项目实际调整。