import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'datamodel.dart'; import 'addevent.dart'; import 'viewevents.dart'; import 'overview.dart'; import 'configuration.dart'; import 'databaseconnector.dart'; Future<void> loadConfiguration() async { final ConfigurationStoreInstance configuration = ConfigurationStoreInstance(); final EventStoreInstance event = EventStoreInstance(); WidgetsFlutterBinding.ensureInitialized(); final prefs = await SharedPreferences.getInstance(); final String? storedConfiguration = prefs.getString('configuration'); if (storedConfiguration != null){ debugPrint('Configuration String: ' + storedConfiguration); configuration.fromMap(jsonDecode(storedConfiguration)); debugPrint('Configuration loaded from shared preferences'); }else{ debugPrint('Failed to load configuration from shared preferences.'); } final String? currentEvent = prefs.getString('currentEvent'); if (currentEvent != null){ debugPrint('Configuration Current Event String: ' + currentEvent); event.fromMap(jsonDecode(currentEvent)); debugPrint('Configuration Current Event loaded from shared preferences'); }else{ debugPrint('Failed to load Current Event configuration from shared preferences.'); } //const storage = FlutterSecureStorage(); //TODO: move login information to secure storage //Map<String, String> allValues = await storage.readAll(); //print('Secure Storage: ' + allValues.toString()); var database = DatabaseInstance(); await database.connect(); //Do once at start of APP! //TODO: there should be a loding screen until configuration is loaded and database connection is established. } void main() { loadConfiguration(); EventStoreInstance events = EventStoreInstance(); final ConfigurationStoreInstance configuration = ConfigurationStoreInstance(); //Reset old data events.reset(); // TODO: load configuration and events from shared preferences. configuration.reset(); configuration.loginInformation = SensorLogin.fromJson({"mail":"admin","password":"adminadmin"}); //TODO: replace for productive version. runApp(MaterialApp( title: 'Mobile Event Log', theme: ThemeData( primarySwatch: Colors.blue, ), initialRoute: '/', routes: { '/': (context) => const Overview(), '/second': (context) => const AddEvent(), '/third': (context) => const ViewEvents(), '/forth': (context) => const Configuration(), }, )); }