diff options
Diffstat (limited to 'lib/main.dart')
-rw-r--r-- | lib/main.dart | 88 |
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, + ), + ); + } +} |