67 lines
1.9 KiB
Dart
67 lines
1.9 KiB
Dart
import 'package:firebase_core/firebase_core.dart';
|
|
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
|
import 'package:flutter_background_geolocation/flutter_background_geolocation.dart' as bg;
|
|
import 'package:rate_my_app/rate_my_app.dart';
|
|
import 'package:traccar_client/quick_actions.dart';
|
|
|
|
import 'main_screen.dart';
|
|
import 'preferences.dart';
|
|
|
|
void main() async {
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
await Firebase.initializeApp();
|
|
FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;
|
|
await Preferences.init();
|
|
await bg.BackgroundGeolocation.ready(Preferences.geolocationConfig());
|
|
runApp(const MainApp());
|
|
}
|
|
|
|
class MainApp extends StatefulWidget {
|
|
const MainApp({super.key});
|
|
|
|
@override
|
|
State<MainApp> createState() => _MainAppState();
|
|
}
|
|
|
|
class _MainAppState extends State<MainApp> {
|
|
RateMyApp rateMyApp = RateMyApp(minDays: 0, minLaunches: 0);
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
|
await rateMyApp.init();
|
|
if (mounted && rateMyApp.shouldOpenDialog) {
|
|
rateMyApp.showRateDialog(context);
|
|
}
|
|
});
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return MaterialApp(
|
|
localizationsDelegates: AppLocalizations.localizationsDelegates,
|
|
supportedLocales: AppLocalizations.supportedLocales,
|
|
theme: ThemeData(
|
|
colorScheme: ColorScheme.fromSeed(
|
|
seedColor: Colors.green,
|
|
brightness: Brightness.light,
|
|
),
|
|
),
|
|
darkTheme: ThemeData(
|
|
colorScheme: ColorScheme.fromSeed(
|
|
seedColor: Colors.green,
|
|
brightness: Brightness.dark,
|
|
),
|
|
),
|
|
home: Stack(
|
|
children: const [
|
|
QuickActionsInitializer(),
|
|
MainScreen(),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|