diff --git a/lib/inventree/sentry.dart b/lib/inventree/sentry.dart index f0b63793..65a997a0 100644 --- a/lib/inventree/sentry.dart +++ b/lib/inventree/sentry.dart @@ -86,7 +86,7 @@ bool isInDebugMode() { Future sentryReportError(dynamic error, dynamic stackTrace) async { - print('Intercepted error: $error'); + print('----- Sentry Intercepted error: $error -----'); print(stackTrace); // Errors thrown in development mode are unlikely to be interesting. You can @@ -94,7 +94,7 @@ Future sentryReportError(dynamic error, dynamic stackTrace) async { // the report. if (isInDebugMode()) { - print('In dev mode. Not sending report to Sentry.io.'); + print('----- In dev mode. Not sending report to Sentry.io -----'); return; } diff --git a/lib/main.dart b/lib/main.dart index db2e4323..3d8fbb56 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -12,37 +12,32 @@ import 'package:one_context/one_context.dart'; import 'dsn.dart'; +import 'package:flutter/foundation.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; -void main() async { - - - await Sentry.init((options) { - options.dsn = SENTRY_DSN_KEY; - }, - //appRunner: () => runApp(InvenTreeApp()) - ); +Future main() async { await runZonedGuarded>(() async { - WidgetsFlutterBinding.ensureInitialized(); + await Sentry.init((options) { + options.dsn = SENTRY_DSN_KEY; + }); - // This captures errors reported by the Flutter framework. - FlutterError.onError = (FlutterErrorDetails details) async { - if (isInDebugMode()) { - // In development mode simply print to console. - FlutterError.dumpErrorToConsole(details); - } else { - // In production mode report to the application zone to report to - // Sentry. - Zone.current.handleUncaughtError(details.exception, details.stack); - } - }; + WidgetsFlutterBinding.ensureInitialized(); - runApp(InvenTreeApp()); + // Pass any flutter errors off to the Sentry reporting context! + FlutterError.onError = (FlutterErrorDetails details) async { - }, (Object error, StackTrace stackTrace) { + // Ensure that the error gets reported to sentry! + await sentryReportError(details.exception, details.stack); + }; + + runApp( + InvenTreeApp() + ); + + }, (Object error, StackTrace stackTrace) async { sentryReportError(error, stackTrace); }); @@ -81,6 +76,7 @@ class InvenTreeApp extends StatelessWidget { const Locale('tr', ''), const Locale('zh', ''), ], + ); } } \ No newline at end of file diff --git a/lib/widget/part_detail.dart b/lib/widget/part_detail.dart index c0714c12..f8f25bdc 100644 --- a/lib/widget/part_detail.dart +++ b/lib/widget/part_detail.dart @@ -432,7 +432,7 @@ class _PartDisplayState extends RefreshableState { L10().stockItems, style: TextStyle(fontWeight: FontWeight.bold), ), - subtitle: part.stockItems.isEmpty ? Text("No stock items available") : null, + subtitle: part.stockItems.isEmpty ? Text(L10().stockItemsNotAvailable) : null, trailing: part.stockItems.isNotEmpty ? Text("${part.stockItems.length}") : null, ) ); @@ -463,7 +463,7 @@ class _PartDisplayState extends RefreshableState { tiles.add( ListTile( - title: Text("Scan New Stock Item"), + title: Text(L10().barcodeScanItem), leading: FaIcon(FontAwesomeIcons.box), trailing: FaIcon(FontAwesomeIcons.qrcode), onTap: null,