opt.: remove internal SharePreference keys while using KvEditor (#509)

Fixes #508
This commit is contained in:
lollipopkit🏳️‍⚧️
2024-08-03 12:37:16 +08:00
committed by GitHub
parent 73248011a1
commit 0e21755acb
6 changed files with 39 additions and 60 deletions

View File

@@ -2,6 +2,6 @@
class BuildData {
static const String name = "ServerBox";
static const int build = 1041;
static const int build = 1042;
static const int script = 55;
}

View File

@@ -1,11 +1,8 @@
import 'package:fl_lib/fl_lib.dart';
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:server_box/core/extension/context/locale.dart';
import 'package:server_box/core/route.dart';
import 'package:server_box/data/res/store.dart';
import 'package:server_box/view/page/setting/platform/platform_pub.dart';
import 'package:watch_connectivity/watch_connectivity.dart';
class AndroidSettingsPage extends StatefulWidget {
const AndroidSettingsPage({super.key});
@@ -15,15 +12,6 @@ class AndroidSettingsPage extends StatefulWidget {
}
class _AndroidSettingsPageState extends State<AndroidSettingsPage> {
late SharedPreferences _sp;
final wc = WatchConnectivity();
@override
void initState() {
super.initState();
SharedPreferences.getInstance().then((value) => _sp = value);
}
@override
Widget build(BuildContext context) {
return Scaffold(
@@ -55,10 +43,10 @@ class _AndroidSettingsPageState extends State<AndroidSettingsPage> {
try {
final keysDel = old.keys.toSet().difference(map.keys.toSet());
for (final key in keysDel) {
_sp.remove(key);
PrefStore.remove(key);
}
map.forEach((key, value) {
_sp.setString(key, value);
PrefStore.set(key, value);
});
context.showSnackBar(l10n.success);
} catch (e) {
@@ -72,27 +60,18 @@ class _AndroidSettingsPageState extends State<AndroidSettingsPage> {
trailing: const Icon(Icons.keyboard_arrow_right),
onTap: () async {
final data = <String, String>{};
_sp.getKeys().forEach((key) {
final val = _sp.getString(key);
for (final key in PrefStore.keys()) {
final val = PrefStore.get<String>(key);
if (val != null) {
data[key] = val;
}
});
final result = await AppRoutes.kvEditor(data: data).go(context);
}
final result = await KvEditor.route.go(
context,
args: KvEditorArgs(data: data, prefix: 'widget_'),
);
if (result != null) {
if (result is Map<String, String>) {
_saveWidgetSP(result, data);
} else {
final err = 'Save Android widget SharedPreference failed: '
'unexpected type: ${result.runtimeType}';
Loggers.app.warning(err);
context.showRoundDialog(
title: l10n.error,
child: SingleChildScrollView(
child: SimpleMarkdown(data: '$err\n\n```$result```'),
),
);
}
_saveWidgetSP(result, data);
}
},
);