Add trigger logger for handling errors in Flutter
This commit is contained in:
+7
-4
@@ -7,12 +7,15 @@ import 'package:tmail_ui_user/main/bindings/main_bindings.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations_delegate.dart';
|
||||
import 'package:tmail_ui_user/main/pages/app_pages.dart';
|
||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||
import 'package:tmail_ui_user/main/utils/app_logger.dart';
|
||||
|
||||
void main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
await MainBindings().dependencies();
|
||||
await HiveCacheConfig().setUp();
|
||||
runApp(TMailApp());
|
||||
initLogger(() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
await MainBindings().dependencies();
|
||||
await HiveCacheConfig().setUp();
|
||||
runApp(TMailApp());
|
||||
});
|
||||
}
|
||||
|
||||
class TMailApp extends StatelessWidget {
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
_Dispatcher logHistory = _Dispatcher("");
|
||||
|
||||
void log(String? value) {
|
||||
String v = value ?? "";
|
||||
logHistory.value = v + "\n" + logHistory.value;
|
||||
if (kReleaseMode == false) {
|
||||
print(v);
|
||||
}
|
||||
}
|
||||
|
||||
void logError(String? value) => log("[ERROR] " + (value ?? ""));
|
||||
|
||||
// Take from: https://flutter.dev/docs/testing/errors
|
||||
void initLogger(VoidCallback runApp) {
|
||||
runZonedGuarded(() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
FlutterError.onError = (FlutterErrorDetails details) {
|
||||
FlutterError.dumpErrorToConsole(details);
|
||||
logError(details.stack.toString());
|
||||
};
|
||||
runApp.call();
|
||||
}, (Object error, StackTrace stack) {
|
||||
logError(stack.toString());
|
||||
});
|
||||
}
|
||||
|
||||
class _Dispatcher extends ValueNotifier<String> {
|
||||
_Dispatcher(String value) : super(value);
|
||||
}
|
||||
Reference in New Issue
Block a user