diff --git a/filcnaplo/lib/app.dart b/filcnaplo/lib/app.dart index efc5414..581b4a0 100644 --- a/filcnaplo/lib/app.dart +++ b/filcnaplo/lib/app.dart @@ -13,6 +13,7 @@ import 'package:filcnaplo/theme/theme.dart'; import 'package:filcnaplo_kreta_api/client/client.dart'; import 'package:filcnaplo_kreta_api/providers/grade_provider.dart'; import 'package:flutter/cupertino.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:i18n_extension/i18n_widget.dart'; @@ -194,8 +195,19 @@ class App extends StatelessWidget { } Route? rootNavigator(RouteSettings route) { - // if platform == android || platform == ios - if (Platform.isAndroid || Platform.isIOS) { + if (kIsWeb) { + switch (route.name) { + case "login_back": + return CupertinoPageRoute( + builder: (context) => const desktop.LoginScreen(back: true)); + case "login": + return _rootRoute(const desktop.LoginScreen()); + case "navigation": + return _rootRoute(const desktop.NavigationScreen()); + case "login_to_navigation": + return desktop.loginRoute(const desktop.NavigationScreen()); + } + } else if (Platform.isAndroid || Platform.isIOS) { switch (route.name) { case "login_back": return CupertinoPageRoute( diff --git a/filcnaplo/lib/database/init.dart b/filcnaplo/lib/database/init.dart index a31c6a6..bce6d24 100644 --- a/filcnaplo/lib/database/init.dart +++ b/filcnaplo/lib/database/init.dart @@ -5,8 +5,10 @@ import 'dart:io'; import 'package:filcnaplo/api/providers/database_provider.dart'; import 'package:filcnaplo/database/struct.dart'; import 'package:filcnaplo/models/settings.dart'; +import 'package:flutter/foundation.dart'; // ignore: depend_on_referenced_packages import 'package:sqflite_common_ffi/sqflite_ffi.dart'; +import 'package:sqflite_common_ffi_web/sqflite_ffi_web.dart'; const settingsDB = DatabaseStruct("settings", { "language": String, "start_page": int, "rounding": int, "theme": int, @@ -48,7 +50,9 @@ Future createTable(Database db, DatabaseStruct struct) => Future initDB(DatabaseProvider database) async { Database db; - if (Platform.isLinux || Platform.isWindows) { + if (kIsWeb) { + db = await databaseFactoryFfiWeb.openDatabase("app.db"); + } else if (Platform.isLinux || Platform.isWindows) { sqfliteFfiInit(); db = await databaseFactoryFfi.openDatabase("app.db"); } else { diff --git a/filcnaplo/lib/main.dart b/filcnaplo/lib/main.dart index a7ad317..b33cc5e 100644 --- a/filcnaplo/lib/main.dart +++ b/filcnaplo/lib/main.dart @@ -48,13 +48,17 @@ class Startup { settings = await database.query.getSettings(database); user = await database.query.getUsers(settings); + late FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin; // Notifications setup - initPlatformState(); - FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = - FlutterLocalNotificationsPlugin(); + if (!kIsWeb) { + initPlatformState(); + flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); + } // Get permission to show notifications - if (Platform.isAndroid) { + if (kIsWeb) { + // do nothing + } else if (Platform.isAndroid) { await flutterLocalNotificationsPlugin .resolvePlatformSpecificImplementation< AndroidFlutterLocalNotificationsPlugin>()! @@ -80,24 +84,26 @@ class Startup { } // Platform specific settings - const DarwinInitializationSettings initializationSettingsDarwin = - DarwinInitializationSettings( - requestSoundPermission: true, - requestBadgePermission: true, - requestAlertPermission: false, - ); - const AndroidInitializationSettings initializationSettingsAndroid = - AndroidInitializationSettings('ic_notification'); - const InitializationSettings initializationSettings = - InitializationSettings( - android: initializationSettingsAndroid, - iOS: initializationSettingsDarwin, - macOS: initializationSettingsDarwin); + if (!kIsWeb) { + const DarwinInitializationSettings initializationSettingsDarwin = + DarwinInitializationSettings( + requestSoundPermission: true, + requestBadgePermission: true, + requestAlertPermission: false, + ); + const AndroidInitializationSettings initializationSettingsAndroid = + AndroidInitializationSettings('ic_notification'); + const InitializationSettings initializationSettings = + InitializationSettings( + android: initializationSettingsAndroid, + iOS: initializationSettingsDarwin, + macOS: initializationSettingsDarwin); - // Initialize notifications - await flutterLocalNotificationsPlugin.initialize( - initializationSettings, - ); + // Initialize notifications + await flutterLocalNotificationsPlugin.initialize( + initializationSettings, + ); + } } } diff --git a/filcnaplo/pubspec.yaml b/filcnaplo/pubspec.yaml index 5cd1e2d..ef1dffd 100644 --- a/filcnaplo/pubspec.yaml +++ b/filcnaplo/pubspec.yaml @@ -67,6 +67,7 @@ dependencies: package_info_plus: ^4.0.2 screenshot: ^2.1.0 flutter_staggered_grid_view: ^0.7.0 + sqflite_common_ffi_web: ^0.4.0 dev_dependencies: flutter_lints: ^2.0.1