TetraStats/lib/main.dart

109 lines
3.5 KiB
Dart
Raw Permalink Normal View History

import 'dart:io';
2023-07-20 20:56:00 +00:00
import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:package_info_plus/package_info_plus.dart';
2023-07-15 16:22:25 +00:00
import 'package:shared_preferences/shared_preferences.dart';
import 'package:tetra_stats/views/customization_view.dart';
import 'package:window_manager/window_manager.dart';
import 'package:sqflite_common_ffi/sqflite_ffi.dart';
2023-07-20 20:56:00 +00:00
import 'package:sqflite_common_ffi_web/sqflite_ffi_web.dart';
import 'package:tetra_stats/gen/strings.g.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:tetra_stats/views/main_view.dart';
import 'package:tetra_stats/views/settings_view.dart';
import 'package:tetra_stats/views/tracked_players_view.dart';
import 'package:tetra_stats/views/calc_view.dart';
2023-12-26 22:02:47 +00:00
import 'package:go_router/go_router.dart';
late final PackageInfo packageInfo;
late SharedPreferences prefs;
ColorScheme sheme = const ColorScheme.dark(primary: Colors.cyanAccent, secondary: Colors.white);
void setAccentColor(Color color){
sheme = ColorScheme.dark(primary: color, secondary: Colors.white);
}
2023-12-26 22:02:47 +00:00
final router = GoRouter(
2024-01-03 17:43:03 +00:00
initialLocation: "/",
2023-12-26 22:02:47 +00:00
routes: [
GoRoute(
path: "/",
builder: (_, __) => const MainView(),
routes: [
GoRoute(
path: 'settings',
builder: (_, __) => const SettingsView(),
),
GoRoute(
path: 'states',
builder: (_, __) => const TrackedPlayersView(),
),
GoRoute(
path: 'calc',
builder: (_, __) => const CalcView(),
),
GoRoute(
path: 'customization',
builder: (_, __) => const CustomizationView(),
),
]
2023-12-26 22:55:51 +00:00
),
GoRoute(
path: "/u/:userId",
builder: (_, __) => MainView(player: __.pathParameters['userId'])
2023-12-26 22:02:47 +00:00
)
],
);
2023-07-15 16:22:25 +00:00
void main() async {
2023-07-20 20:56:00 +00:00
if (kIsWeb) {
sqfliteFfiInit();
databaseFactory = databaseFactoryFfiWeb;
} else if (Platform.isWindows || Platform.isLinux || Platform.isMacOS) {
sqfliteFfiInit();
databaseFactory = databaseFactoryFfi;
}
2023-07-15 16:22:25 +00:00
WidgetsFlutterBinding.ensureInitialized();
2023-10-10 20:20:27 +00:00
if (!kIsWeb && !Platform.isAndroid && !Platform.isIOS){
await WindowManager.instance.ensureInitialized();
windowManager.waitUntilReadyToShow().then((_) async {
await windowManager.setTitle('Tetra Stats');
});
}
packageInfo = await PackageInfo.fromPlatform();
2023-07-15 16:22:25 +00:00
prefs = await SharedPreferences.getInstance();
String? locale = prefs.getString("locale");
if (locale == null){
LocaleSettings.useDeviceLocale();
}else{
LocaleSettings.setLocaleRaw(locale);
}
runApp(TranslationProvider(
child: const MyApp(),
));
}
class MyApp extends StatelessWidget {
2023-07-15 16:22:25 +00:00
const MyApp({super.key});
@override
Widget build(BuildContext context) {
2023-12-26 22:02:47 +00:00
return MaterialApp.router(
2023-07-20 20:56:00 +00:00
title: "Tetra Stats",
2023-12-26 22:02:47 +00:00
routerConfig: router,
scrollBehavior: const MaterialScrollBehavior().copyWith(
2023-07-20 20:56:00 +00:00
dragDevices: {PointerDeviceKind.mouse, PointerDeviceKind.touch, PointerDeviceKind.stylus, PointerDeviceKind.unknown},
),
locale: TranslationProvider.of(context).flutterLocale,
supportedLocales: AppLocaleUtils.supportedLocales,
localizationsDelegates: GlobalMaterialLocalizations.delegates,
theme: ThemeData(
fontFamily: 'Eurostile Round',
colorScheme: sheme,
scaffoldBackgroundColor: Colors.black
)
);
}
}