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/localizations/app_localizations_delegate.dart';
|
||||||
import 'package:tmail_ui_user/main/pages/app_pages.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/routes/app_routes.dart';
|
||||||
|
import 'package:tmail_ui_user/main/utils/app_logger.dart';
|
||||||
|
|
||||||
void main() async {
|
void main() async {
|
||||||
WidgetsFlutterBinding.ensureInitialized();
|
initLogger(() async {
|
||||||
await MainBindings().dependencies();
|
WidgetsFlutterBinding.ensureInitialized();
|
||||||
await HiveCacheConfig().setUp();
|
await MainBindings().dependencies();
|
||||||
runApp(TMailApp());
|
await HiveCacheConfig().setUp();
|
||||||
|
runApp(TMailApp());
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
class TMailApp extends StatelessWidget {
|
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