gpt4 book ai didi

firebase - 如何在 Flutter 中初始化 firebase crashlytics?

转载 作者:行者123 更新时间:2023-12-04 17:24:28 37 4
gpt4 key购买 nike

我已经通过 pubspec.yaml 和 Gradle 文件中的依赖为我的 Flutter 项目实现了 firebase crashlytics,并且能够在 firebase 控制台中看到 crashlytics 仪表板。
现在我的问题是如何在 main.dart 文件中初始化 crashlytics 以及如何编写日志并捕获特定页面(例如主页)的错误或崩溃。
我从这个链接试过:https://pub.dev/packages/firebase_crashlytics/example
main.dart

final _kShouldTestAsyncErrorOnInit = false;
// Toggle this for testing Crashlytics in your app locally.
final _kTestingCrashlytics = true;

main() {
WidgetsFlutterBinding.ensureInitialized();
runZonedGuarded(() {
runApp(MyApp());
}, (error, stackTrace) {
print('runZonedGuarded: Caught error in my root zone.');
FirebaseCrashlytics.instance.recordError(error, stackTrace);
});
}

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "My App",
debugShowCheckedModeBanner: false,
home: MainPage(),
theme: ThemeData(
accentColor: Colors.blue
),
);
}
}

class MainPage extends StatefulWidget {
@override
_MainPageState createState() => _MainPageState();
}

class _MainPageState extends State<MainPage> {

Future<void> _initializeFlutterFireFuture;

Future<void> _testAsyncErrorOnInit() async {
Future<void>.delayed(const Duration(seconds: 2), () {
final List<int> list = <int>[];
print(list[100]);
});
}

// Define an async function to initialize FlutterFire
Future<void> _initializeFlutterFire() async {
// Wait for Firebase to initialize
await Firebase.initializeApp();

if (_kTestingCrashlytics) {
// Force enable crashlytics collection enabled if we're testing it.
await FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
} else {
// Else only enable it in non-debug builds.
// You could additionally extend this to allow users to opt-in.
await FirebaseCrashlytics.instance
.setCrashlyticsCollectionEnabled(!kDebugMode);
}

// Pass all uncaught errors to Crashlytics.
Function originalOnError = FlutterError.onError;
FlutterError.onError = (FlutterErrorDetails errorDetails) async {
await FirebaseCrashlytics.instance.recordFlutterError(errorDetails);
// Forward to original handler.
originalOnError(errorDetails);
};

if (_kShouldTestAsyncErrorOnInit) {
await _testAsyncErrorOnInit();
}
}

@override
void initState() {
super.initState();
_initializeFlutterFireFuture = _initializeFlutterFire();
Firebase.initializeApp().whenComplete(() {
print("completed");
setState(() {});
});
checkLoginStatus();
}
}
在flutter中初始化crashlytics是正确的还是其他方式?
如果我必须检查 HomePage 中是否有任何崩溃,那么如何从主页获取该崩溃并将其显示在 firbase crashlytics 中?

最佳答案

是的,您对 crashlytics 的配置没问题。
如果您使用 Firebase 身份验证,您可以添加以下代码以便能够跟踪特定于用户的崩溃:

FirebaseAuth.instance.onAuthStateChanged.listen((firebaseUser) {
if (firebaseUser != null && firebaseUser?.email != null) {
Crashlytics.instance.setUserEmail(firebaseUser.email);
}
if (firebaseUser != null && firebaseUser?.uid != null) {
Crashlytics.instance.setUserIdentifier(firebaseUser.uid);
}
if (firebaseUser != null && firebaseUser?.displayName != null) {
Crashlytics.instance.setUserName(firebaseUser.displayName);
}
});
另外,不要忘记跟踪 中的特定异常捕获 试捕像这样阻止:
try {
//some code here...
} catch (e, s) {
Crashlytics.instance.recordError(e, s, context: "an error occured: uid:$uid");
}

关于firebase - 如何在 Flutter 中初始化 firebase crashlytics?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64241615/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com