Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.

Commit 845d000

Browse files
author
hffmnn
committed
funnel all public methods through one internal method
1 parent 0d3b3f7 commit 845d000

1 file changed

Lines changed: 32 additions & 49 deletions

File tree

packages/firebase_crashlytics/lib/src/firebase_crashlytics.dart

Lines changed: 32 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -24,64 +24,21 @@ class Crashlytics {
2424
static const MethodChannel channel =
2525
MethodChannel('plugins.flutter.io/firebase_crashlytics');
2626

27-
/// Submits non-fatal crash report to Firebase Crashlytics.
27+
/// Submits non-fatal flutter crash report based on `FlutterErrorDetails`
28+
/// to Firebase Crashlytics.
2829
Future<void> recordFlutterError(FlutterErrorDetails details) async {
2930
print('Error caught by Crashlytics plugin <recordFlutterError>:');
3031

31-
bool inDebugMode = false;
32-
if (!enableInDevMode) {
33-
assert(inDebugMode = true);
34-
}
35-
36-
if (inDebugMode && !enableInDevMode) {
37-
print(Trace.format(details.stack));
38-
} else {
39-
// Report error
40-
final List<String> stackTraceLines =
41-
Trace.format(details.stack).trimRight().split('\n');
42-
final List<Map<String, String>> stackTraceElements =
43-
getStackTraceElements(stackTraceLines);
44-
await channel
45-
.invokeMethod<dynamic>('Crashlytics#onError', <String, dynamic>{
46-
'exception': details.exceptionAsString(),
47-
// FlutterErrorDetails.context has been migrated from a String to a
48-
// DiagnosticsNode. Coerce it to a String here in a way that will work
49-
// on both Strings and the new DiagnosticsNode values. See https://groups.google.com/forum/#!topic/flutter-announce/hp1RNIgej38
50-
'context': '${details.context}',
51-
'stackTraceElements': stackTraceElements,
52-
'logs': _logs.toList(),
53-
'keys': _prepareKeys(),
54-
});
55-
}
32+
_recordError(details.exceptionAsString(), details.stack,
33+
context: details.context);
5634
}
5735

36+
/// Submits non-fatal crash report to Firebase Crashlytics.
5837
Future<void> recordError(dynamic exception, StackTrace stack,
5938
{dynamic context}) async {
6039
print('Error caught by Crashlytics plugin <recordError>:');
6140

62-
bool inDebugMode = false;
63-
if (!enableInDevMode) {
64-
assert(inDebugMode = true);
65-
}
66-
67-
if (inDebugMode && !enableInDevMode) {
68-
print(Trace.format(stack));
69-
} else {
70-
// Report error
71-
final List<String> stackTraceLines =
72-
Trace.format(stack).trimRight().split('\n');
73-
final List<Map<String, String>> stackTraceElements =
74-
getStackTraceElements(stackTraceLines);
75-
final dynamic result = await channel
76-
.invokeMethod<dynamic>('Crashlytics#onError', <String, dynamic>{
77-
'exception': "${exception.toString()}",
78-
'context': '$context',
79-
'stackTraceElements': stackTraceElements,
80-
'logs': _logs.toList(),
81-
'keys': _prepareKeys(),
82-
});
83-
print(result);
84-
}
41+
_recordError(exception, stack, context: context);
8542
}
8643

8744
void crash() {
@@ -225,4 +182,30 @@ class Crashlytics {
225182
}
226183
return elements;
227184
}
185+
186+
Future<void> _recordError(dynamic exception, StackTrace stack,
187+
{dynamic context}) async {
188+
bool inDebugMode = false;
189+
if (!enableInDevMode) {
190+
assert(inDebugMode = true);
191+
}
192+
193+
if (inDebugMode && !enableInDevMode) {
194+
print(Trace.format(stack));
195+
} else {
196+
// Report error
197+
final List<String> stackTraceLines =
198+
Trace.format(stack).trimRight().split('\n');
199+
final List<Map<String, String>> stackTraceElements =
200+
getStackTraceElements(stackTraceLines);
201+
await channel
202+
.invokeMethod<dynamic>('Crashlytics#onError', <String, dynamic>{
203+
'exception': "${exception.toString()}",
204+
'context': '$context',
205+
'stackTraceElements': stackTraceElements,
206+
'logs': _logs.toList(),
207+
'keys': _prepareKeys(),
208+
});
209+
}
210+
}
228211
}

0 commit comments

Comments
 (0)