import "dart:async"; import "package:flutter_localizations/flutter_localizations.dart"; import "package:flutter_gen/gen_l10n/app_localizations.dart"; import "package:flutter/material.dart"; import "package:one_context/one_context.dart"; import "package:package_info_plus/package_info_plus.dart"; import "package:sentry_flutter/sentry_flutter.dart"; import "package:inventree/inventree/sentry.dart"; import "package:inventree/dsn.dart"; import "package:inventree/widget/home.dart"; Future main() async { WidgetsFlutterBinding.ensureInitialized(); await runZonedGuarded>(() async { PackageInfo info = await PackageInfo.fromPlatform(); String pkg = info.packageName; String version = info.version; String build = info.buildNumber; String release = "${pkg}@${version}:${build}"; await Sentry.init((options) { options.dsn = SENTRY_DSN_KEY; options.release = release; options.environment = isInDebugMode() ? "debug" : "release"; }); // Pass any flutter errors off to the Sentry reporting context! FlutterError.onError = (FlutterErrorDetails details) async { // Ensure that the error gets reported to sentry! await sentryReportError(details.exception, details.stack); }; runApp( InvenTreeApp() ); }, (Object error, StackTrace stackTrace) async { sentryReportError(error, stackTrace); }); } class InvenTreeApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, builder: OneContext().builder, navigatorKey: OneContext().key, onGenerateTitle: (BuildContext context) => "InvenTree", theme: ThemeData( primarySwatch: Colors.lightBlue, secondaryHeaderColor: Colors.blueGrey, ), home: InvenTreeHomePage(), localizationsDelegates: [ I18N.delegate, GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: [ const Locale("cs", ""), // Czech const Locale("de", ""), // German const Locale("el", ""), // Greek const Locale("en", ""), // English const Locale("es-ES", ""), // Spanish const Locale("es-MX", ""), // Spanish (mexican) const Locale("fa", ""), // Farsi (Persian) const Locale("fr", ""), // French const Locale("he", ""), // Hebrew const Locale("hu", ""), // Hungarian const Locale("id", ""), // Indonesian const Locale("it", ""), // Italian const Locale("ja", ""), // Japanese const Locale("ko", ""), // Korean const Locale("nl", ""), // Dutch const Locale("no", ""), // Norwegian const Locale("pl", ""), // Polish const Locale("pt", ""), // Portuguese const Locale("ru", ""), // Russian const Locale("sv", ""), // Swedish const Locale("th", ""), // Thai const Locale("tr", ""), // Turkish const Locale("vi", ""), // Vietnamese const Locale("zh-CN", ""), // Chinese ], ); } }