diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart index 90cffd96..1716aacc 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart @@ -315,7 +315,7 @@ class SDe extends S { String get noSavedPrivateKey => 'Keine gespeicherten Private Keys'; @override - String get noSavedSnippet => 'Keine gespeicherten snippets.'; + String get noSavedSnippet => 'Keine gespeicherten Snippets.'; @override String get noServerAvailable => 'Kein Server verfügbar.'; diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index 2c31df78..10b08aa1 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -95,7 +95,7 @@ "noInterface": "Kein Interface", "noResult": "Kein Ergebnis", "noSavedPrivateKey": "Keine gespeicherten Private Keys", - "noSavedSnippet": "Keine gespeicherten snippets.", + "noSavedSnippet": "Keine gespeicherten Snippets.", "noServerAvailable": "Kein Server verfügbar.", "noUpdateAvailable": "Kein Update verfügbar", "notSelected": "Nicht ausgewählt", diff --git a/lib/view/page/setting.dart b/lib/view/page/setting.dart index 3c826505..a430a246 100644 --- a/lib/view/page/setting.dart +++ b/lib/view/page/setting.dart @@ -32,6 +32,12 @@ class SettingPage extends StatefulWidget { } class _SettingPageState extends State { + final themeKey = GlobalKey>(); + final startPageKey = GlobalKey>(); + final updateIntervalKey = GlobalKey>(); + final termThemeKey = GlobalKey>(); + final maxRetryKey = GlobalKey>(); + late final SettingStore _setting; late final ServerProvider _serverProvider; late MediaQueryData _media; @@ -148,7 +154,6 @@ class _SettingPageState extends State { _s.onServerDetailPage, style: grey, ), - contentPadding: const EdgeInsets.only(left: 17, right: 11), trailing: buildSwitch(context, _setting.showDistLogo), ); } @@ -186,6 +191,7 @@ class _SettingPageState extends State { ), growable: false, ).toList(); + return ListTile( title: Text( _s.updateServerStatusInterval, @@ -194,10 +200,14 @@ class _SettingPageState extends State { _s.willTakEeffectImmediately, style: grey, ), - trailing: PopupMenu( - items: items, + onTap: () { + updateIntervalKey.currentState?.showButtonMenu(); + }, + trailing: PopupMenuButton( + key: updateIntervalKey, + itemBuilder: (BuildContext context) => items, initialValue: _updateInterval, - onSelected: (val) { + onSelected: (int val) { setState(() { _updateInterval = val; }); @@ -261,14 +271,19 @@ class _SettingPageState extends State { ), ) .toList(); + return ListTile( title: Text( _s.launchPage, ), - trailing: PopupMenu( - items: items, + onTap: () { + startPageKey.currentState?.showButtonMenu(); + }, + trailing: PopupMenuButton( + key: startPageKey, + itemBuilder: (BuildContext context) => items, initialValue: _launchPageIdx, - onSelected: (idx) { + onSelected: (int idx) { setState(() { _launchPageIdx = idx; }); @@ -298,10 +313,14 @@ class _SettingPageState extends State { title: Text( _s.termTheme, ), - trailing: PopupMenu( - items: items, + onTap: () { + termThemeKey.currentState?.showButtonMenu(); + }, + trailing: PopupMenuButton( + key: termThemeKey, + itemBuilder: (BuildContext context) => items, initialValue: _termThemeIdx, - onSelected: (idx) { + onSelected: (int idx) { setState(() { _termThemeIdx = idx; }); @@ -325,15 +344,21 @@ class _SettingPageState extends State { ).toList(); final help = _maxRetryCount == 0 ? _s.maxRetryCountEqual0 : _s.canPullRefresh; + return ListTile( title: Text( _s.maxRetryCount, textAlign: TextAlign.start, ), - trailing: PopupMenu( - items: items, + subtitle: Text(help, style: grey), + onTap: () { + maxRetryKey.currentState?.showButtonMenu(); + }, + trailing: PopupMenuButton( + key: maxRetryKey, + itemBuilder: (BuildContext context) => items, initialValue: _maxRetryCount, - onSelected: (val) { + onSelected: (int val) { setState(() { _maxRetryCount = val; }); @@ -343,7 +368,6 @@ class _SettingPageState extends State { '${_maxRetryCount.toInt()} ${_s.times}', ), ), - subtitle: Text(help, style: grey), ); } @@ -357,15 +381,22 @@ class _SettingPageState extends State { ); }, ).toList(); + return ListTile( title: Text( _s.themeMode, ), - trailing: PopupMenu( - items: items, + onTap: () { + themeKey.currentState?.showButtonMenu(); + }, + trailing: PopupMenuButton( + key: themeKey, + itemBuilder: (BuildContext context) => items, initialValue: _nightMode, - onSelected: (idx) { - _nightMode = idx; + onSelected: (int idx) { + setState(() { + _nightMode = idx; + }); _setting.themeMode.put(_nightMode); }, child: Text(_buildThemeModeStr(_nightMode)), diff --git a/lib/view/page/snippet/edit.dart b/lib/view/page/snippet/edit.dart index 6ebe21f4..bd93bb85 100644 --- a/lib/view/page/snippet/edit.dart +++ b/lib/view/page/snippet/edit.dart @@ -99,7 +99,7 @@ class _SnippetEditPageState extends State node: _scriptNode, minLines: 3, maxLines: 10, - type: TextInputType.text, + type: TextInputType.multiline, label: _s.snippet, icon: Icons.code, ),