mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 07:14:28 +01:00
35
lib/app.dart
35
lib/app.dart
@@ -80,36 +80,21 @@ class MyApp extends StatelessWidget {
|
|||||||
themeMode: themeMode,
|
themeMode: themeMode,
|
||||||
theme: light,
|
theme: light,
|
||||||
darkTheme: tMode < 3 ? dark : dark.toAmoled,
|
darkTheme: tMode < 3 ? dark : dark.toAmoled,
|
||||||
home: _buildAppContent(ctx),
|
home: Builder(
|
||||||
);
|
builder: (context) {
|
||||||
}
|
|
||||||
|
|
||||||
Widget _buildAppContent(BuildContext ctx) {
|
|
||||||
//if (Pros.app.isWearOS) return const WearHome();
|
|
||||||
return const _AppContent(
|
|
||||||
intro: _IntroPage(),
|
|
||||||
child: HomePage(),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// It's used for init settings related to [BuildContext]
|
|
||||||
final class _AppContent extends StatelessWidget {
|
|
||||||
final Widget child;
|
|
||||||
final Widget intro;
|
|
||||||
|
|
||||||
const _AppContent({required this.child, required this.intro});
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
context.setLibL10n();
|
context.setLibL10n();
|
||||||
final appL10n = AppLocalizations.of(context);
|
final appL10n = AppLocalizations.of(context);
|
||||||
if (appL10n != null) l10n = appL10n;
|
if (appL10n != null) l10n = appL10n;
|
||||||
|
|
||||||
final showIntro = Stores.setting.showIntro.fetch();
|
final intros = _IntroPage.builders;
|
||||||
if (showIntro) return intro;
|
if (intros.isNotEmpty) {
|
||||||
|
return _IntroPage(intros);
|
||||||
|
}
|
||||||
|
|
||||||
return child;
|
return const HomePage();
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -280,7 +280,9 @@ class SettingStore extends PersistentStore {
|
|||||||
/// Format: {width}x{height}
|
/// Format: {width}x{height}
|
||||||
late final windowSize = property('windowSize', '');
|
late final windowSize = property('windowSize', '');
|
||||||
|
|
||||||
late final showIntro = property('showIntro', true);
|
late final introVer = property('introVer', 0);
|
||||||
|
|
||||||
|
late final letterCache = property('letterCache', false);
|
||||||
|
|
||||||
// Never show these settings for users
|
// Never show these settings for users
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,24 +1,26 @@
|
|||||||
part of 'app.dart';
|
part of 'app.dart';
|
||||||
|
|
||||||
final class _IntroPage extends StatelessWidget {
|
final class _IntroPage extends StatelessWidget {
|
||||||
const _IntroPage();
|
final List<IntroPageBuilder> pages;
|
||||||
|
|
||||||
static final _setting = Stores.setting;
|
const _IntroPage(this.pages);
|
||||||
static const _kIconSize = 23.0;
|
|
||||||
static const _introListPad = EdgeInsets.symmetric(horizontal: 17);
|
static const _builders = {
|
||||||
|
1: _buildAppSettings,
|
||||||
|
2: _buildRecommended,
|
||||||
|
1006: _buildTermLetterCache,
|
||||||
|
};
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return LayoutBuilder(
|
return LayoutBuilder(
|
||||||
builder: (context, cons) {
|
builder: (context, cons) {
|
||||||
final padTop = cons.maxHeight * .2;
|
final padTop = cons.maxHeight * .16;
|
||||||
|
final pages_ = pages.map((e) => e(context, padTop)).toList();
|
||||||
return IntroPage(
|
return IntroPage(
|
||||||
pages: [
|
pages: pages_,
|
||||||
_buildAppSettings(context, padTop),
|
|
||||||
_buildRecommended(context, padTop),
|
|
||||||
],
|
|
||||||
onDone: (ctx) {
|
onDone: (ctx) {
|
||||||
Stores.setting.showIntro.put(false);
|
Stores.setting.introVer.put(BuildData.build);
|
||||||
Navigator.of(ctx).pushReplacement(
|
Navigator.of(ctx).pushReplacement(
|
||||||
MaterialPageRoute(builder: (_) => const HomePage()),
|
MaterialPageRoute(builder: (_) => const HomePage()),
|
||||||
);
|
);
|
||||||
@@ -28,12 +30,29 @@ final class _IntroPage extends StatelessWidget {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildRecommended(BuildContext context, double padTop) {
|
static Widget _buildTermLetterCache(BuildContext context, double padTop) {
|
||||||
return ListView(
|
return ListView(
|
||||||
padding: _introListPad,
|
padding: _introListPad,
|
||||||
children: [
|
children: [
|
||||||
SizedBox(height: padTop),
|
SizedBox(height: padTop),
|
||||||
const Icon(Bootstrap.stars, size: 35),
|
IntroPage.title(icon: BoxIcons.bxs_terminal, big: true),
|
||||||
|
SizedBox(height: padTop),
|
||||||
|
ListTile(
|
||||||
|
leading: const Icon(Bootstrap.input_cursor),
|
||||||
|
title: Text(l10n.letterCache),
|
||||||
|
subtitle: Text(l10n.letterCacheTip, style: UIs.textGrey),
|
||||||
|
trailing: StoreSwitch(prop: _setting.letterCache),
|
||||||
|
).cardx,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
static Widget _buildRecommended(BuildContext context, double padTop) {
|
||||||
|
return ListView(
|
||||||
|
padding: _introListPad,
|
||||||
|
children: [
|
||||||
|
SizedBox(height: padTop),
|
||||||
|
IntroPage.title(icon: Bootstrap.stars, big: true),
|
||||||
SizedBox(height: padTop),
|
SizedBox(height: padTop),
|
||||||
ListTile(
|
ListTile(
|
||||||
leading: const Icon(MingCute.delete_2_fill),
|
leading: const Icon(MingCute.delete_2_fill),
|
||||||
@@ -57,12 +76,12 @@ final class _IntroPage extends StatelessWidget {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildAppSettings(BuildContext ctx, double padTop) {
|
static Widget _buildAppSettings(BuildContext ctx, double padTop) {
|
||||||
return ListView(
|
return ListView(
|
||||||
padding: _introListPad,
|
padding: _introListPad,
|
||||||
children: [
|
children: [
|
||||||
SizedBox(height: padTop),
|
SizedBox(height: padTop),
|
||||||
_buildTitle(l10n.init, big: true),
|
IntroPage.title(text: l10n.init, big: true),
|
||||||
SizedBox(height: padTop),
|
SizedBox(height: padTop),
|
||||||
ListTile(
|
ListTile(
|
||||||
leading: const Icon(IonIcons.language),
|
leading: const Icon(IonIcons.language),
|
||||||
@@ -94,14 +113,15 @@ final class _IntroPage extends StatelessWidget {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildTitle(String text, {bool big = false}) {
|
static List<IntroPageBuilder> get builders {
|
||||||
return Center(
|
final storedVer = _setting.introVer.fetch();
|
||||||
child: Text(
|
return _builders.entries
|
||||||
text,
|
.where((e) => e.key > storedVer)
|
||||||
style: big
|
.map((e) => e.value)
|
||||||
? const TextStyle(fontSize: 41, fontWeight: FontWeight.w500)
|
.toList();
|
||||||
: UIs.textGrey,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static final _setting = Stores.setting;
|
||||||
|
static const _kIconSize = 23.0;
|
||||||
|
static const _introListPad = EdgeInsets.symmetric(horizontal: 17);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,7 +67,6 @@
|
|||||||
"decode": "Decode",
|
"decode": "Decode",
|
||||||
"decompress": "Dekomprimieren",
|
"decompress": "Dekomprimieren",
|
||||||
"delete": "Löschen",
|
"delete": "Löschen",
|
||||||
"deleteScripts": "Gleichzeitiges Löschen von Server-Skripten",
|
|
||||||
"deleteServers": "Batch-Löschung von Servern",
|
"deleteServers": "Batch-Löschung von Servern",
|
||||||
"deviceName": "Gerätename",
|
"deviceName": "Gerätename",
|
||||||
"dirEmpty": "Stelle sicher, dass der Ordner leer ist.",
|
"dirEmpty": "Stelle sicher, dass der Ordner leer ist.",
|
||||||
@@ -154,6 +153,8 @@
|
|||||||
"languageName": "Deutsch",
|
"languageName": "Deutsch",
|
||||||
"lastTry": "Letzter Versuch",
|
"lastTry": "Letzter Versuch",
|
||||||
"launchPage": "Startseite",
|
"launchPage": "Startseite",
|
||||||
|
"letterCache": "Buchstaben-Caching",
|
||||||
|
"letterCacheTip": "Empfohlen zu aktivieren, aber die Aktivierung verhindert die Eingabe von CJK (Chinesisch, Japanisch, Koreanisch) Zeichen",
|
||||||
"license": "Lizenzen",
|
"license": "Lizenzen",
|
||||||
"light": "Hell",
|
"light": "Hell",
|
||||||
"loadingFiles": "Lädt Dateien...",
|
"loadingFiles": "Lädt Dateien...",
|
||||||
|
|||||||
@@ -67,7 +67,6 @@
|
|||||||
"decode": "Decode",
|
"decode": "Decode",
|
||||||
"decompress": "Decompress",
|
"decompress": "Decompress",
|
||||||
"delete": "Delete",
|
"delete": "Delete",
|
||||||
"deleteScripts": "Delete server scripts at the same time",
|
|
||||||
"deleteServers": "Batch delete servers",
|
"deleteServers": "Batch delete servers",
|
||||||
"deviceName": "Device name",
|
"deviceName": "Device name",
|
||||||
"dirEmpty": "Make sure the folder is empty.",
|
"dirEmpty": "Make sure the folder is empty.",
|
||||||
@@ -154,6 +153,8 @@
|
|||||||
"languageName": "English",
|
"languageName": "English",
|
||||||
"lastTry": "Last try",
|
"lastTry": "Last try",
|
||||||
"launchPage": "Launch page",
|
"launchPage": "Launch page",
|
||||||
|
"letterCache": "Letter caching",
|
||||||
|
"letterCacheTip": "Recommended to enable, but enabling it prevents the input of CJK (Chinese, Japanese, Korean) characters",
|
||||||
"license": "License",
|
"license": "License",
|
||||||
"light": "Light",
|
"light": "Light",
|
||||||
"loadingFiles": "Loading files...",
|
"loadingFiles": "Loading files...",
|
||||||
|
|||||||
@@ -67,7 +67,6 @@
|
|||||||
"decode": "Decodificar",
|
"decode": "Decodificar",
|
||||||
"decompress": "Descomprimir",
|
"decompress": "Descomprimir",
|
||||||
"delete": "Eliminar",
|
"delete": "Eliminar",
|
||||||
"deleteScripts": "Eliminar scripts del servidor simultáneamente",
|
|
||||||
"deleteServers": "Eliminar servidores en lote",
|
"deleteServers": "Eliminar servidores en lote",
|
||||||
"deviceName": "Nombre del dispositivo",
|
"deviceName": "Nombre del dispositivo",
|
||||||
"dirEmpty": "Asegúrate de que el directorio esté vacío",
|
"dirEmpty": "Asegúrate de que el directorio esté vacío",
|
||||||
@@ -154,6 +153,8 @@
|
|||||||
"languageName": "Español",
|
"languageName": "Español",
|
||||||
"lastTry": "Último intento",
|
"lastTry": "Último intento",
|
||||||
"launchPage": "Página de lanzamiento",
|
"launchPage": "Página de lanzamiento",
|
||||||
|
"letterCache": "Caché de letras",
|
||||||
|
"letterCacheTip": "Se recomienda activar, pero al activarlo se impide la introducción de caracteres CJK (chino, japonés, coreano)",
|
||||||
"license": "Licencia de código abierto",
|
"license": "Licencia de código abierto",
|
||||||
"light": "Claro",
|
"light": "Claro",
|
||||||
"loadingFiles": "Cargando directorio...",
|
"loadingFiles": "Cargando directorio...",
|
||||||
|
|||||||
@@ -67,7 +67,6 @@
|
|||||||
"decode": "Décoder",
|
"decode": "Décoder",
|
||||||
"decompress": "Décompresser",
|
"decompress": "Décompresser",
|
||||||
"delete": "Supprimer",
|
"delete": "Supprimer",
|
||||||
"deleteScripts": "Supprimer les scripts du serveur en même temps",
|
|
||||||
"deleteServers": "Supprimer des serveurs en lot",
|
"deleteServers": "Supprimer des serveurs en lot",
|
||||||
"deviceName": "Nom de l'appareil",
|
"deviceName": "Nom de l'appareil",
|
||||||
"dirEmpty": "Assurez-vous que le répertoire est vide.",
|
"dirEmpty": "Assurez-vous que le répertoire est vide.",
|
||||||
@@ -154,6 +153,8 @@
|
|||||||
"languageName": "Français",
|
"languageName": "Français",
|
||||||
"lastTry": "Dernière tentative",
|
"lastTry": "Dernière tentative",
|
||||||
"launchPage": "Page de lancement",
|
"launchPage": "Page de lancement",
|
||||||
|
"letterCache": "Mise en cache des lettres",
|
||||||
|
"letterCacheTip": "Recommandé à activer, mais son activation empêche la saisie de caractères CJK (chinois, japonais, coréen)",
|
||||||
"license": "Licence",
|
"license": "Licence",
|
||||||
"light": "Clair",
|
"light": "Clair",
|
||||||
"loadingFiles": "Chargement des fichiers...",
|
"loadingFiles": "Chargement des fichiers...",
|
||||||
|
|||||||
@@ -67,7 +67,6 @@
|
|||||||
"decode": "Membaca sandi",
|
"decode": "Membaca sandi",
|
||||||
"decompress": "Dekompresi",
|
"decompress": "Dekompresi",
|
||||||
"delete": "Menghapus",
|
"delete": "Menghapus",
|
||||||
"deleteScripts": "Menghapus skrip server secara bersamaan",
|
|
||||||
"deleteServers": "Penghapusan server secara batch",
|
"deleteServers": "Penghapusan server secara batch",
|
||||||
"deviceName": "Nama perangkat",
|
"deviceName": "Nama perangkat",
|
||||||
"dirEmpty": "Pastikan dir kosong.",
|
"dirEmpty": "Pastikan dir kosong.",
|
||||||
@@ -154,6 +153,8 @@
|
|||||||
"languageName": "Indonesia",
|
"languageName": "Indonesia",
|
||||||
"lastTry": "Percobaan terakhir",
|
"lastTry": "Percobaan terakhir",
|
||||||
"launchPage": "Halaman peluncuran",
|
"launchPage": "Halaman peluncuran",
|
||||||
|
"letterCache": "Caching huruf",
|
||||||
|
"letterCacheTip": "Disarankan untuk diaktifkan, tetapi mengaktifkannya mencegah input karakter CJK (Cina, Jepang, Korea)",
|
||||||
"license": "Lisensi",
|
"license": "Lisensi",
|
||||||
"light": "Terang",
|
"light": "Terang",
|
||||||
"loadingFiles": "Memuat file ...",
|
"loadingFiles": "Memuat file ...",
|
||||||
|
|||||||
@@ -67,7 +67,6 @@
|
|||||||
"decode": "デコード",
|
"decode": "デコード",
|
||||||
"decompress": "解凍",
|
"decompress": "解凍",
|
||||||
"delete": "削除",
|
"delete": "削除",
|
||||||
"deleteScripts": "サーバースクリプトも削除",
|
|
||||||
"deleteServers": "サーバーを一括削除",
|
"deleteServers": "サーバーを一括削除",
|
||||||
"deviceName": "デバイス名",
|
"deviceName": "デバイス名",
|
||||||
"dirEmpty": "フォルダーが空であることを確認してください",
|
"dirEmpty": "フォルダーが空であることを確認してください",
|
||||||
@@ -154,6 +153,8 @@
|
|||||||
"languageName": "日本語",
|
"languageName": "日本語",
|
||||||
"lastTry": "最後の試み",
|
"lastTry": "最後の試み",
|
||||||
"launchPage": "起動ページ",
|
"launchPage": "起動ページ",
|
||||||
|
"letterCache": "文字キャッシング",
|
||||||
|
"letterCacheTip": "有効化を推奨しますが、有効にするとCJK(中国語、日本語、韓国語)の文字の入力ができなくなります",
|
||||||
"license": "オープンソースライセンス",
|
"license": "オープンソースライセンス",
|
||||||
"light": "ライト",
|
"light": "ライト",
|
||||||
"loadingFiles": "ディレクトリを読み込んでいます...",
|
"loadingFiles": "ディレクトリを読み込んでいます...",
|
||||||
|
|||||||
@@ -67,7 +67,6 @@
|
|||||||
"decode": "Decoderen",
|
"decode": "Decoderen",
|
||||||
"decompress": "Decomprimeren",
|
"decompress": "Decomprimeren",
|
||||||
"delete": "Verwijderen",
|
"delete": "Verwijderen",
|
||||||
"deleteScripts": "Verwijder tegelijkertijd serverscripts",
|
|
||||||
"deleteServers": "Servers batchgewijs verwijderen",
|
"deleteServers": "Servers batchgewijs verwijderen",
|
||||||
"deviceName": "Apparaatnaam",
|
"deviceName": "Apparaatnaam",
|
||||||
"dirEmpty": "Zorg ervoor dat de map leeg is.",
|
"dirEmpty": "Zorg ervoor dat de map leeg is.",
|
||||||
@@ -154,6 +153,8 @@
|
|||||||
"languageName": "Nederlands",
|
"languageName": "Nederlands",
|
||||||
"lastTry": "Laatste poging",
|
"lastTry": "Laatste poging",
|
||||||
"launchPage": "Startpagina",
|
"launchPage": "Startpagina",
|
||||||
|
"letterCache": "Lettercaching",
|
||||||
|
"letterCacheTip": "Aanbevolen om in te schakelen, maar bij inschakeling wordt de invoer van CJK (Chinees, Japans, Koreaans) tekens voorkomen",
|
||||||
"license": "Licentie",
|
"license": "Licentie",
|
||||||
"light": "Licht",
|
"light": "Licht",
|
||||||
"loadingFiles": "Bestanden laden...",
|
"loadingFiles": "Bestanden laden...",
|
||||||
|
|||||||
@@ -67,7 +67,6 @@
|
|||||||
"decode": "Decodificar",
|
"decode": "Decodificar",
|
||||||
"decompress": "Descomprimir",
|
"decompress": "Descomprimir",
|
||||||
"delete": "Excluir",
|
"delete": "Excluir",
|
||||||
"deleteScripts": "Excluir scripts do servidor simultaneamente",
|
|
||||||
"deleteServers": "Excluir servidores em lote",
|
"deleteServers": "Excluir servidores em lote",
|
||||||
"deviceName": "Nome do dispositivo",
|
"deviceName": "Nome do dispositivo",
|
||||||
"dirEmpty": "Certifique-se de que a pasta está vazia",
|
"dirEmpty": "Certifique-se de que a pasta está vazia",
|
||||||
@@ -154,6 +153,8 @@
|
|||||||
"languageName": "Português",
|
"languageName": "Português",
|
||||||
"lastTry": "Última tentativa",
|
"lastTry": "Última tentativa",
|
||||||
"launchPage": "Página de lançamento",
|
"launchPage": "Página de lançamento",
|
||||||
|
"letterCache": "Cache de letras",
|
||||||
|
"letterCacheTip": "Recomendado para ativar, mas a ativação impede a entrada de caracteres CJK (chinês, japonês, coreano)",
|
||||||
"license": "Licença de código aberto",
|
"license": "Licença de código aberto",
|
||||||
"light": "Claro",
|
"light": "Claro",
|
||||||
"loadingFiles": "Carregando diretórios...",
|
"loadingFiles": "Carregando diretórios...",
|
||||||
|
|||||||
@@ -67,7 +67,6 @@
|
|||||||
"decode": "декодировать",
|
"decode": "декодировать",
|
||||||
"decompress": "разархивировать",
|
"decompress": "разархивировать",
|
||||||
"delete": "удалить",
|
"delete": "удалить",
|
||||||
"deleteScripts": "удалить скрипты с сервера",
|
|
||||||
"deleteServers": "удалить серверы пакетно",
|
"deleteServers": "удалить серверы пакетно",
|
||||||
"deviceName": "Название устройства",
|
"deviceName": "Название устройства",
|
||||||
"dirEmpty": "Пожалуйста, убедитесь, что папка пуста",
|
"dirEmpty": "Пожалуйста, убедитесь, что папка пуста",
|
||||||
@@ -154,6 +153,8 @@
|
|||||||
"languageName": "Русский",
|
"languageName": "Русский",
|
||||||
"lastTry": "последняя попытка",
|
"lastTry": "последняя попытка",
|
||||||
"launchPage": "стартовая страница",
|
"launchPage": "стартовая страница",
|
||||||
|
"letterCache": "Кэширование букв",
|
||||||
|
"letterCacheTip": "Рекомендуется включить, но его активация препятствует вводу символов CJK (китайский, японский, корейский)",
|
||||||
"license": "лицензия",
|
"license": "лицензия",
|
||||||
"light": "светлая",
|
"light": "светлая",
|
||||||
"loadingFiles": "Загрузка файлов...",
|
"loadingFiles": "Загрузка файлов...",
|
||||||
|
|||||||
@@ -67,7 +67,6 @@
|
|||||||
"decode": "解码",
|
"decode": "解码",
|
||||||
"decompress": "解压缩",
|
"decompress": "解压缩",
|
||||||
"delete": "删除",
|
"delete": "删除",
|
||||||
"deleteScripts": "同时删除服务器脚本",
|
|
||||||
"deleteServers": "批量删除服务器",
|
"deleteServers": "批量删除服务器",
|
||||||
"deviceName": "设备名",
|
"deviceName": "设备名",
|
||||||
"dirEmpty": "请确保文件夹为空",
|
"dirEmpty": "请确保文件夹为空",
|
||||||
@@ -154,6 +153,8 @@
|
|||||||
"languageName": "简体中文",
|
"languageName": "简体中文",
|
||||||
"lastTry": "最后尝试",
|
"lastTry": "最后尝试",
|
||||||
"launchPage": "启动页",
|
"launchPage": "启动页",
|
||||||
|
"letterCache": "输入法字符缓存",
|
||||||
|
"letterCacheTip": "推荐开启,但是开启后无法输入 CJK 等文字",
|
||||||
"license": "开源许可证",
|
"license": "开源许可证",
|
||||||
"light": "亮",
|
"light": "亮",
|
||||||
"loadingFiles": "正在加载目录。。。",
|
"loadingFiles": "正在加载目录。。。",
|
||||||
|
|||||||
@@ -67,7 +67,6 @@
|
|||||||
"decode": "解碼",
|
"decode": "解碼",
|
||||||
"decompress": "解壓縮",
|
"decompress": "解壓縮",
|
||||||
"delete": "刪除",
|
"delete": "刪除",
|
||||||
"deleteScripts": "同時刪除伺服器腳本",
|
|
||||||
"deleteServers": "批量刪除伺服器",
|
"deleteServers": "批量刪除伺服器",
|
||||||
"deviceName": "設備名",
|
"deviceName": "設備名",
|
||||||
"dirEmpty": "請確保資料夾為空",
|
"dirEmpty": "請確保資料夾為空",
|
||||||
@@ -154,6 +153,8 @@
|
|||||||
"languageName": "繁體中文",
|
"languageName": "繁體中文",
|
||||||
"lastTry": "最後嘗試",
|
"lastTry": "最後嘗試",
|
||||||
"launchPage": "啓動頁",
|
"launchPage": "啓動頁",
|
||||||
|
"letterCache": "输入法字符緩存",
|
||||||
|
"letterCacheTip": "推薦開啟,但是開啟後無法輸入CJK(中文、日文、韓文)等文字",
|
||||||
"license": "開源許可證",
|
"license": "開源許可證",
|
||||||
"light": "亮",
|
"light": "亮",
|
||||||
"loadingFiles": "正在加載目錄...",
|
"loadingFiles": "正在加載目錄...",
|
||||||
|
|||||||
@@ -156,6 +156,7 @@ class _SettingPageState extends State<SettingPage> {
|
|||||||
Widget _buildSSH() {
|
Widget _buildSSH() {
|
||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: [
|
||||||
|
_buildLetterCache(),
|
||||||
_buildSSHWakeLock(),
|
_buildSSHWakeLock(),
|
||||||
_buildTermTheme(),
|
_buildTermTheme(),
|
||||||
_buildFont(),
|
_buildFont(),
|
||||||
@@ -1178,4 +1179,16 @@ class _SettingPageState extends State<SettingPage> {
|
|||||||
trailing: StoreSwitch(prop: _setting.betaTest),
|
trailing: StoreSwitch(prop: _setting.betaTest),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Widget _buildLetterCache() {
|
||||||
|
return ListTile(
|
||||||
|
leading: const Icon(Bootstrap.input_cursor),
|
||||||
|
title: Text(l10n.letterCache),
|
||||||
|
subtitle: Text(
|
||||||
|
'${l10n.letterCacheTip}\n${l10n.needRestart}',
|
||||||
|
style: UIs.textGrey,
|
||||||
|
),
|
||||||
|
trailing: StoreSwitch(prop: _setting.letterCache),
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -129,6 +129,7 @@ class SSHPageState extends State<SSHPage>
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildBody() {
|
Widget _buildBody() {
|
||||||
|
final letterCache = Stores.setting.letterCache.fetch();
|
||||||
return SizedBox(
|
return SizedBox(
|
||||||
height: _media.size.height -
|
height: _media.size.height -
|
||||||
_virtKeysHeight -
|
_virtKeysHeight -
|
||||||
@@ -144,8 +145,10 @@ class SSHPageState extends State<SSHPage>
|
|||||||
_terminal,
|
_terminal,
|
||||||
key: _termKey,
|
key: _termKey,
|
||||||
controller: _terminalController,
|
controller: _terminalController,
|
||||||
keyboardType: TextInputType.text,
|
keyboardType: letterCache
|
||||||
enableSuggestions: true,
|
? TextInputType.text
|
||||||
|
: TextInputType.visiblePassword,
|
||||||
|
enableSuggestions: !letterCache,
|
||||||
textStyle: _terminalStyle,
|
textStyle: _terminalStyle,
|
||||||
theme: _terminalTheme,
|
theme: _terminalTheme,
|
||||||
deleteDetection: isMobile,
|
deleteDetection: isMobile,
|
||||||
|
|||||||
@@ -385,8 +385,8 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: "."
|
path: "."
|
||||||
ref: "v1.0.59"
|
ref: "v1.0.60"
|
||||||
resolved-ref: aaca37cb7052e301bbd723615f6827371ad7f2b8
|
resolved-ref: "5a88f7c6901e8f2c556a1d79ceaf7be9fb518233"
|
||||||
url: "https://github.com/lppcg/fl_lib"
|
url: "https://github.com/lppcg/fl_lib"
|
||||||
source: git
|
source: git
|
||||||
version: "0.0.1"
|
version: "0.0.1"
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ dependencies:
|
|||||||
fl_lib:
|
fl_lib:
|
||||||
git:
|
git:
|
||||||
url: https://github.com/lppcg/fl_lib
|
url: https://github.com/lppcg/fl_lib
|
||||||
ref: v1.0.59
|
ref: v1.0.60
|
||||||
|
|
||||||
dependency_overrides:
|
dependency_overrides:
|
||||||
# dartssh2:
|
# dartssh2:
|
||||||
|
|||||||
Reference in New Issue
Block a user