aboutsummaryrefslogtreecommitdiff
path: root/lib/main.dart
diff options
context:
space:
mode:
Diffstat (limited to 'lib/main.dart')
-rw-r--r--lib/main.dart88
1 files changed, 88 insertions, 0 deletions
diff --git a/lib/main.dart b/lib/main.dart
new file mode 100644
index 0000000..b76dc5b
--- /dev/null
+++ b/lib/main.dart
@@ -0,0 +1,88 @@
+import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
+
+import 'package:kulinar_app/constants.dart';
+import 'package:kulinar_app/models/data/shoplist_data_class.dart';
+import 'package:kulinar_app/views/main_view.dart';
+import 'package:kulinar_app/util/notifications.dart';
+import 'package:kulinar_app/models/data/recipe_data_class.dart';
+import 'package:kulinar_app/models/data/settings_data_class.dart';
+
+import 'package:flutter_local_notifications/flutter_local_notifications.dart';
+import 'package:flutter_localizations/flutter_localizations.dart';
+import 'package:flutter_gen/gen_l10n/app_localizations.dart';
+
+// TODO: Should also probably compress / encode exports and internal images
+// TODO: Add search based on ingridients, ie write noodle, get auflauf, noodle salad etc
+void main() async {
+ WidgetsFlutterBinding.ensureInitialized();
+
+ const AndroidInitializationSettings initializationSettingsAndroid = AndroidInitializationSettings("@mipmap/notification_icon");
+ final InitializationSettings initializationSettings = InitializationSettings(android: initializationSettingsAndroid);
+ await Notifications.flutterLocalNotificationsPlugin.initialize(initializationSettings, onSelectNotification: Notifications.selectNotification);
+
+ await RecipeData.load();
+ await SettingsData.load();
+ await ShoplistData.load();
+
+ runApp(AppRoot());
+}
+
+class AppRoot extends StatefulWidget {
+ const AppRoot({Key? key}) : super(key: key);
+
+ @override
+ _AppRootState createState() => _AppRootState();
+}
+
+class _AppRootState extends State<AppRoot> {
+ @override
+ Widget build(BuildContext context) {
+ SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
+ statusBarColor: Colors.transparent,
+ statusBarIconBrightness: Brightness.light,
+ ));
+
+ return MaterialApp(
+ localizationsDelegates: [
+ AppLocalizations.delegate,
+ GlobalMaterialLocalizations.delegate,
+ GlobalWidgetsLocalizations.delegate,
+ GlobalCupertinoLocalizations.delegate,
+ ],
+ supportedLocales: [
+ const Locale('de', ''),
+ const Locale('en', ''),
+ const Locale('ru', ''),
+ ],
+ theme: themeData(),
+ title: "Kulinar",
+ home: MainView(),
+ );
+ }
+
+ ThemeData themeData() {
+ return ThemeData(
+ // TODO: Experiment what this does
+ // brightness: Brightness.light,
+ primarySwatch: cPrimarySwatchColor,
+ textSelectionTheme: TextSelectionThemeData(
+ cursorColor: cIconColor,
+ ),
+ inputDecorationTheme: InputDecorationTheme(
+ hintStyle: cSearchTextStyle,
+ ),
+ appBarTheme: AppBarTheme(
+ actionsIconTheme: IconThemeData(color: cIconColor),
+ titleTextStyle: cTitleStyle,
+ toolbarTextStyle: cTitleStyle,
+ iconTheme: IconThemeData(color: cIconColor),
+ centerTitle: true,
+ elevation: 10.0,
+ ),
+ buttonTheme: ButtonThemeData(
+ buttonColor: cPrimaryColor,
+ ),
+ );
+ }
+}