forked from Nexus/nexus
Add settings page (#46)
Fixes #37, fixes #47. Reviewed-on: Nexus/nexus#46
This commit is contained in:
parent
06824784cb
commit
0ef9b25320
20 changed files with 970 additions and 28 deletions
27
lib/controllers/settings_controller.dart
Normal file
27
lib/controllers/settings_controller.dart
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
import "dart:convert";
|
||||
import "package:flutter_riverpod/flutter_riverpod.dart";
|
||||
import "package:nexus/controllers/settings_file_controller.dart";
|
||||
import "package:nexus/models/settings.dart";
|
||||
|
||||
class SettingsController extends AsyncNotifier<Settings> {
|
||||
@override
|
||||
Future<Settings> build() async {
|
||||
final file = await ref.watch(SettingsFileController.provider.future);
|
||||
|
||||
try {
|
||||
return Settings.fromJson(json.decode(await file.readAsString()));
|
||||
} catch (_) {
|
||||
return Settings();
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> set(Settings settings) async {
|
||||
state = AsyncData(settings);
|
||||
final file = await ref.watch(SettingsFileController.provider.future);
|
||||
await file.writeAsString(json.encode(settings.toJson()));
|
||||
}
|
||||
|
||||
static final provider = AsyncNotifierProvider<SettingsController, Settings>(
|
||||
SettingsController.new,
|
||||
);
|
||||
}
|
||||
Loading…
Reference in a new issue