Save exceptions locally
OmarHatem committed
Nov 23, 2022 at 23:02 UTC
68c20641b959844bb5495e48126190bfb69d8c05
1 file changed
+31
-4
lib/main.dart
+31
-4
@@ -1,4 +1,7 @@
1
import 'dart:async';
2
+import 'dart:convert';
3
+import 'dart:io';
4
+import 'dart:isolate';
5
import 'package:cake_wallet/bitcoin/bitcoin.dart';
6
import 'package:cake_wallet/entities/language_service.dart';
7
import 'package:cake_wallet/buy/order.dart';
@@ -46,11 +49,24 @@ Future<void> main() async {
49
await runZonedGuarded(() async {
50
WidgetsFlutterBinding.ensureInitialized();
51
49
- // FlutterError.onError = ;
52
+ FlutterError.onError = (errorDetails) {
53
+ _saveException(errorDetails.exception.toString(), errorDetails.stack);
54
+ };
55
51
- // Isolate.current.addErrorListener(RawReceivePort((pair) async {
52
- // final List<dynamic> errorAndStacktrace = pair;
53
- // }).sendPort);
56
+ PlatformDispatcher.instance.onError = (error, stack) {
57
+ _saveException(error.toString(), stack);
58
+ return true;
59
+ };
60
+
61
+ Isolate.current.addErrorListener(RawReceivePort((pair) async {
62
+ final errorAndStacktrace = pair as List<String?>;
63
+ _saveException(
64
+ errorAndStacktrace.first,
65
+ errorAndStacktrace.last == null
66
+ ? null
67
+ : StackTrace.fromString(errorAndStacktrace.last!),
68
+ );
69
+ }).sendPort);
70
71
final appDir = await getApplicationDocumentsDirectory();
72
await Hive.close();
@@ -151,6 +167,17 @@ Future<void> main() async {
167
});
168
}
169
170
+void _saveException(String? error, StackTrace? stackTrace) async {
171
+ final file = File('/error.txt');
172
+ final exception = {
173
+ "${DateTime.now()}": {
174
+ "error": error,
175
+ "stackTrace": stackTrace.toString(),
176
+ }
177
+ };
178
+ await file.writeAsString(jsonEncode(exception), mode: FileMode.append);
179
+}
180
+
181
Future<void> initialSetup(
182
{required SharedPreferences sharedPreferences,
183
required Box<Node> nodes,