You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter使用Firebase Crashlytics无法查看非致命错误怎么办

Flutter Crashlytics非致命错误未上报排查方案

1. 核心配置遗漏:未捕获异步层未处理错误

你当前的配置仅能捕获Flutter框架层的渲染相关错误,异步代码(如Future/async方法)抛出的未捕获错误不会被FlutterError.onError拦截,需将runApp逻辑包裹在runZonedGuarded中,完整main函数参考如下:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  await FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);

  // 捕获所有Dart层未处理的异步错误
  runZonedGuarded<Future<void>>(() async {
    FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;
    runApp(BaseApp());
  }, (error, stackTrace) {
    FirebaseCrashlytics.instance.recordError(error, stackTrace);
  });
}

2. 测试阶段配置优化

  • Debug模式下非致命错误上报存在缓存机制,可主动调用FirebaseCrashlytics.instance.sendUnsentReports()触发即时上报,缩短测试等待时间
  • 若Debug模式测试始终无上报,可打Release包验证,部分开发环境的代理、网络限制会拦截非崩溃类上报请求

3. 触发逻辑校验

你当前使用的依赖版本组合不存在兼容性冲突,无需调整版本配置,若以上两步操作后仍无上报,可增加本地日志打印确认recordError方法是否被触发:

runZonedGuarded<Future<void>>(() async {
  FlutterError.onError = (errorDetails) {
    print("捕获到Flutter框架错误:${errorDetails.exception}");
    FirebaseCrashlytics.instance.recordFlutterError(errorDetails);
  };
  runApp(BaseApp());
}, (error, stackTrace) {
  print("捕获到异步未处理错误:$error");
  FirebaseCrashlytics.instance.recordError(error, stackTrace);
});

内容的提问来源于stack exchange,提问作者Emanuele Vinci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 18:54:04