mirror of
https://github.com/ALEZ-DEV/Babylonia-terminal.git
synced 2025-12-16 01:18:50 +00:00
add shared preferences to keep setting state
This commit is contained in:
parent
5c52ddb586
commit
2c02ef39c6
@ -7,14 +7,15 @@ import './screens/screens.dart';
|
||||
import './providers/providers.dart';
|
||||
|
||||
class BabyloniaLauncher extends StatelessWidget {
|
||||
const BabyloniaLauncher({super.key});
|
||||
const BabyloniaLauncher({super.key, required this.settingsProvider});
|
||||
final SettingsProvider settingsProvider;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MultiProvider(
|
||||
providers: [
|
||||
ChangeNotifierProvider(
|
||||
create: (context) => SettingsProvider(),
|
||||
create: (context) => settingsProvider,
|
||||
),
|
||||
ChangeNotifierProvider(
|
||||
create: (context) => GameStateProvider(),
|
||||
|
||||
@ -4,10 +4,17 @@ import 'package:media_kit/media_kit.dart';
|
||||
|
||||
import './app.dart';
|
||||
import './messages/generated.dart';
|
||||
import './providers/providers.dart';
|
||||
|
||||
void main() async {
|
||||
await initializeRust();
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
MediaKit.ensureInitialized();
|
||||
runApp(const BabyloniaLauncher());
|
||||
|
||||
final SettingsProvider settings = SettingsProvider();
|
||||
await settings.init();
|
||||
|
||||
runApp(BabyloniaLauncher(
|
||||
settingsProvider: settings,
|
||||
));
|
||||
}
|
||||
|
||||
@ -1,4 +1,7 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
enum BackgroundType {
|
||||
contain,
|
||||
@ -10,7 +13,40 @@ enum BackgroundType {
|
||||
}
|
||||
|
||||
class Settings {
|
||||
BackgroundType _backgroundType = BackgroundType.cover;
|
||||
final SharedPreferences prefs;
|
||||
|
||||
Settings({required this.prefs});
|
||||
|
||||
static Future<Settings> create() async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
return Settings(prefs: prefs);
|
||||
}
|
||||
|
||||
BackgroundType? _backgroundType;
|
||||
String backgroundTypeKey = 'background_type';
|
||||
|
||||
BackgroundType get selectedBackgroundType {
|
||||
final bt = prefs.getString(backgroundTypeKey);
|
||||
if (bt == null) {
|
||||
_backgroundType = BackgroundType.disable;
|
||||
prefs.setString(
|
||||
backgroundTypeKey,
|
||||
getStringNameOfBackgroundType(_backgroundType!),
|
||||
);
|
||||
} else {
|
||||
_backgroundType ??= getBackgroundTypeFromString(bt);
|
||||
}
|
||||
|
||||
return _backgroundType!;
|
||||
}
|
||||
|
||||
set selectedBackgroundType(BackgroundType selectedBackground) {
|
||||
_backgroundType = selectedBackground;
|
||||
prefs.setString(
|
||||
backgroundTypeKey,
|
||||
getStringNameOfBackgroundType(selectedBackground),
|
||||
);
|
||||
}
|
||||
|
||||
static final List<BackgroundType> backgoundList = [
|
||||
BackgroundType.contain,
|
||||
@ -74,12 +110,4 @@ class Settings {
|
||||
'Can\'t convert BackgroundType to widget BoxFit!');
|
||||
}
|
||||
}
|
||||
|
||||
BackgroundType get selectedBackgroundType {
|
||||
return _backgroundType;
|
||||
}
|
||||
|
||||
set selectedBackgroundType(BackgroundType selectedBackground) {
|
||||
_backgroundType = selectedBackground;
|
||||
}
|
||||
}
|
||||
|
||||
@ -16,6 +16,7 @@ class GameStateProvider with ChangeNotifier {
|
||||
break;
|
||||
}
|
||||
isUpdating = false;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,7 +3,11 @@ import 'package:flutter/material.dart';
|
||||
import './../models/settings.dart';
|
||||
|
||||
class SettingsProvider with ChangeNotifier {
|
||||
final Settings _settings = Settings();
|
||||
late final Settings _settings;
|
||||
|
||||
Future init() async {
|
||||
_settings = await Settings.create();
|
||||
}
|
||||
|
||||
set setSelectedBackgroundType(BackgroundType selectedBackground) {
|
||||
_settings.selectedBackgroundType = selectedBackground;
|
||||
|
||||
@ -46,6 +46,7 @@ dependencies:
|
||||
provider: ^6.1.2
|
||||
rinf: ^6.9.0
|
||||
protobuf: ^3.1.0
|
||||
shared_preferences: ^2.2.3
|
||||
|
||||
dependency_overrides:
|
||||
media_kit:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user