First, set up a Firebase project
Config firebase_crashlytics
https://pub.dev/packages/firebase_crashlytics
- Update dependencies
dependencies:
# firebase
firebase_core: ^0.5.0
firebase_crashlytics: ^0.2.1
- Install it via pub get
Android integration
- Update android/build.gradle
buildscript {
ext.kotlin_version = '1.3.61'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.3'
classpath 'com.google.gms:google-services:4.3.4'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.3.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
- Update android/app/build.gradle.
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.google.firebase:firebase-analytics:17.5.0'
implementation 'com.google.firebase:firebase-crashlytics:17.2.2'
}
apply plugin: 'com.google.firebase.crashlytics'
apply plugin: 'com.google.gms.google-services'
iOS integration
- Open ios/Runner.xcworkspace
- Select Runner from the project navigation
- Select the Build Phases tab.
- Click + Add a new build phase, and select New Run Script Phase.

- Add command below to the
Type a script...
text box.
"${PODS_ROOT}/FirebaseCrashlytics/run"

Use the plugin
import 'dart:async';
import 'dart:isolate';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
import 'package:flutter/material.dart';
import 'package:nft/my_app.dart';
Future<void> main() async {
/// WidgetsFlutterBinding
WidgetsFlutterBinding.ensureInitialized();
// Initializing FlutterFire
await Firebase.initializeApp();
// Initialize Crash report
await FirebaseCrashlytics.instance
.setCrashlyticsCollectionEnabled(true);
// Pass all uncaught errors from the framework to Crashlytics.
FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;
// Errors outside of Flutter
Isolate.current.addErrorListener(RawReceivePort((List<dynamic> pair) async {
final List<dynamic> errorAndStacktrace = pair;
await FirebaseCrashlytics.instance.recordError(
errorAndStacktrace.first,
errorAndStacktrace.last as StackTrace,
);
}).sendPort);
// Zoned Errors
runZonedGuarded<Future<void>>(() async {
await myMain();
}, FirebaseCrashlytics.instance.recordError);
}
To test crash, just create a new button and send test crashing
FlatButton(
onPressed: () {
// Forcing a crash
FirebaseCrashlytics.instance.crash();
},
child: const Text('Crash'),
),

- Run the app and wait for Firebase collects data, it may take a few hours.
- Open Firebase console, Quality -> Crashlytics


More example: https://firebase.flutter.dev/docs/crashlytics/usage