import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:info_tren/api/station_data.dart'; import 'package:info_tren/models.dart'; import 'package:info_tren/pages/station_arrdep_page/view_station/view_station.dart'; import 'package:info_tren/pages/train_info_page/view_train/train_info.dart'; import 'package:info_tren/utils/default_ui_design.dart'; import 'package:info_tren/utils/iterable_extensions.dart'; import 'package:shared_preferences/shared_preferences.dart'; final sharedPreferencesProvider = Provider( (_) => throw UnimplementedError('Please override in ProviderScope'), ); final uiDesignProvider = Provider((ref) { final sharedPreferences = ref.watch(sharedPreferencesProvider); final stored = sharedPreferences.getString('uiDesign'); final design = UiDesign.values.where((element) => element.name == stored).firstOrNull ?? defaultUiDesign; return design; }); Future setUiDesign(Ref ref, UiDesign? design) async { final sharedPreferences = ref.watch(sharedPreferencesProvider); if (design != null) { await sharedPreferences.setString('uiDesign', design.name); } else { await sharedPreferences.remove('uiDesign'); } ref.invalidate(uiDesignProvider); } final trainInfoArgumentsProvider = Provider( (_) => throw UnimplementedError('Please override in ProviderScope'), ); final stationDataProvider = FutureProvider.family((ref, String stationName) => getStationData(stationName)); final viewStationArgumentsProvider = Provider( (_) => throw UnimplementedError('Please override in ProviderScope'), ); final viewStationDataProvider = Provider((ref) { final args = ref.watch(viewStationArgumentsProvider); final data = ref.watch(stationDataProvider(args.stationName)); return data; });