mirror of
https://github.com/ALEZ-DEV/Babylonia-terminal.git
synced 2025-12-18 02:18:51 +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';
|
import './providers/providers.dart';
|
||||||
|
|
||||||
class BabyloniaLauncher extends StatelessWidget {
|
class BabyloniaLauncher extends StatelessWidget {
|
||||||
const BabyloniaLauncher({super.key});
|
const BabyloniaLauncher({super.key, required this.settingsProvider});
|
||||||
|
final SettingsProvider settingsProvider;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return MultiProvider(
|
return MultiProvider(
|
||||||
providers: [
|
providers: [
|
||||||
ChangeNotifierProvider(
|
ChangeNotifierProvider(
|
||||||
create: (context) => SettingsProvider(),
|
create: (context) => settingsProvider,
|
||||||
),
|
),
|
||||||
ChangeNotifierProvider(
|
ChangeNotifierProvider(
|
||||||
create: (context) => GameStateProvider(),
|
create: (context) => GameStateProvider(),
|
||||||
|
|||||||
@ -4,10 +4,17 @@ import 'package:media_kit/media_kit.dart';
|
|||||||
|
|
||||||
import './app.dart';
|
import './app.dart';
|
||||||
import './messages/generated.dart';
|
import './messages/generated.dart';
|
||||||
|
import './providers/providers.dart';
|
||||||
|
|
||||||
void main() async {
|
void main() async {
|
||||||
await initializeRust();
|
await initializeRust();
|
||||||
WidgetsFlutterBinding.ensureInitialized();
|
WidgetsFlutterBinding.ensureInitialized();
|
||||||
MediaKit.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:flutter/material.dart';
|
||||||
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
|
|
||||||
enum BackgroundType {
|
enum BackgroundType {
|
||||||
contain,
|
contain,
|
||||||
@ -10,7 +13,40 @@ enum BackgroundType {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class Settings {
|
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 = [
|
static final List<BackgroundType> backgoundList = [
|
||||||
BackgroundType.contain,
|
BackgroundType.contain,
|
||||||
@ -74,12 +110,4 @@ class Settings {
|
|||||||
'Can\'t convert BackgroundType to widget BoxFit!');
|
'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;
|
break;
|
||||||
}
|
}
|
||||||
isUpdating = false;
|
isUpdating = false;
|
||||||
|
notifyListeners();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,11 @@ import 'package:flutter/material.dart';
|
|||||||
import './../models/settings.dart';
|
import './../models/settings.dart';
|
||||||
|
|
||||||
class SettingsProvider with ChangeNotifier {
|
class SettingsProvider with ChangeNotifier {
|
||||||
final Settings _settings = Settings();
|
late final Settings _settings;
|
||||||
|
|
||||||
|
Future init() async {
|
||||||
|
_settings = await Settings.create();
|
||||||
|
}
|
||||||
|
|
||||||
set setSelectedBackgroundType(BackgroundType selectedBackground) {
|
set setSelectedBackgroundType(BackgroundType selectedBackground) {
|
||||||
_settings.selectedBackgroundType = selectedBackground;
|
_settings.selectedBackgroundType = selectedBackground;
|
||||||
|
|||||||
@ -46,6 +46,7 @@ dependencies:
|
|||||||
provider: ^6.1.2
|
provider: ^6.1.2
|
||||||
rinf: ^6.9.0
|
rinf: ^6.9.0
|
||||||
protobuf: ^3.1.0
|
protobuf: ^3.1.0
|
||||||
|
shared_preferences: ^2.2.3
|
||||||
|
|
||||||
dependency_overrides:
|
dependency_overrides:
|
||||||
media_kit:
|
media_kit:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user