new: edit settings in json

This commit is contained in:
lollipopkit
2023-08-28 18:08:26 +08:00
parent 11c3bf795b
commit 0420793e21
13 changed files with 83 additions and 31 deletions

View File

@@ -43,6 +43,28 @@ enum NetViewType {
);
}
}
int toJson() {
switch (this) {
case NetViewType.conn:
return 0;
case NetViewType.speed:
return 1;
case NetViewType.traffic:
return 2;
}
}
static NetViewType fromJson(int json) {
switch (json) {
case 0:
return NetViewType.conn;
case 2:
return NetViewType.traffic;
default:
return NetViewType.speed;
}
}
}
class NetViewData {

View File

@@ -10,6 +10,7 @@
"all": "Alle",
"alreadyLastDir": "Bereits im letzten Verzeichnis.",
"alterUrl": "Url ändern",
"atOwnRisk": "Auf eigene Gefahr !",
"attention": "Achtung",
"auto": "System folgen",
"autoCheckUpdate": "Aktualisierung automatisch prüfen",

View File

@@ -10,6 +10,7 @@
"all": "All",
"alreadyLastDir": "Already in last directory.",
"alterUrl": "Alter url",
"atOwnRisk": "At your own risk !",
"attention": "Attention",
"auto": "Auto",
"autoCheckUpdate": "Auto check update",

View File

@@ -10,6 +10,7 @@
"all": "Semua",
"alreadyLastDir": "Sudah di direktori terakhir.",
"alterUrl": "Alter url",
"atOwnRisk": "Dengan risiko Anda sendiri",
"attention": "Perhatian",
"auto": "Auto",
"autoCheckUpdate": "Periksa pembaruan otomatis",

View File

@@ -10,6 +10,7 @@
"all": "所有",
"alreadyLastDir": "已经是最上层目录了",
"alterUrl": "备选链接",
"atOwnRisk": "如果了解不多,请不要继续!",
"attention": "注意",
"auto": "自动",
"autoCheckUpdate": "自动检查更新",

View File

@@ -10,6 +10,7 @@
"all": "所有",
"alreadyLastDir": "已經是最上層目錄了",
"alterUrl": "備選鏈接",
"atOwnRisk": "如果了解不多,請不要繼續!",
"attention": "注意",
"auto": "自動",
"autoCheckUpdate": "自動檢查更新",

View File

@@ -233,36 +233,7 @@ class _HomePageState extends State<HomePage>
leading: const Icon(Icons.settings),
title: Text(_s.setting),
onTap: () => AppRoute.setting().go(context),
onLongPress: () async {
final map = _setting.toJson();
final go = await showRoundDialog(
context: context,
child: Text(_s.attention),
actions: [
TextButton(
onPressed: () => context.pop(true),
child: Text(
_s.ok,
style: const TextStyle(color: Colors.red),
),
),
],
);
if (go != true) {
return;
}
/// Encode [map] to String with indent `\t`
final text = const JsonEncoder.withIndent('\t').convert(map);
final result = await AppRoute.editor(
text: text,
langCode: 'json',
).go(context);
if (result == null) {
return;
}
_setting.box.putAll(json.decode(result) as Map<String, dynamic>);
},
onLongPress: _onLongPressSetting,
),
ListTile(
leading: const Icon(Icons.vpn_key),
@@ -383,4 +354,36 @@ class _HomePageState extends State<HomePage>
homeWidgetChannel.invokeMethod('update');
}
}
Future<void> _onLongPressSetting() async {
final go = await showRoundDialog(
context: context,
title: Text(_s.attention),
child: Text(_s.atOwnRisk),
actions: [
TextButton(
onPressed: () => context.pop(true),
child: Text(
_s.ok,
style: const TextStyle(color: Colors.red),
),
),
],
);
if (go != true) {
return;
}
/// Encode [map] to String with indent `\t`
final map = _setting.toJson();
final text = jsonEncoder.convert(map);
final result = await AppRoute.editor(
text: text,
langCode: 'json',
).go(context);
if (result == null) {
return;
}
_setting.box.putAll(json.decode(result) as Map<String, dynamic>);
}
}

View File

@@ -194,7 +194,8 @@ class _SettingPageState extends State<SettingPage> {
_buildFont(),
_buildTermFontSize(),
_buildSSHVirtualKeyAutoOff(),
_buildKeyboardType(),
// Use hardware keyboard on desktop, so there is no need to set it
if (isMobile) _buildKeyboardType(),
_buildSSHVirtKeys(),
_buildSftpRmrfDir(),
].map((e) => RoundRectCard(e)).toList(),