From 62d8285c1ae8766bb702255498583cc1d59d2534 Mon Sep 17 00:00:00 2001 From: Thomas <77213338+its-tom@users.noreply.github.com> Date: Fri, 12 May 2023 15:29:44 +0200 Subject: [PATCH 1/2] show Menu when clicking on ListTile, correct german typo, use multiline for snippets --- .dart_tool/flutter_gen/gen_l10n/l10n_de.dart | 2 +- lib/l10n/app_de.arb | 2 +- lib/view/page/setting.dart | 66 +++++++++++++++----- lib/view/page/snippet/edit.dart | 2 +- 4 files changed, 52 insertions(+), 20 deletions(-) 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 06cdcdcc..f855f344 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; @@ -186,6 +192,7 @@ class _SettingPageState extends State { ), growable: false, ).toList(); + return ListTile( title: Text( _s.updateServerStatusInterval, @@ -194,10 +201,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 +272,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 +314,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 +345,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 +369,6 @@ class _SettingPageState extends State { '${_maxRetryCount.toInt()} ${_s.times}', ), ), - subtitle: Text(help, style: grey), ); } @@ -357,15 +382,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, ), From 7684c280bc9738657b4f6d9ea678bbd8ad3e7fc6 Mon Sep 17 00:00:00 2001 From: Thomas <77213338+its-tom@users.noreply.github.com> Date: Fri, 12 May 2023 15:37:30 +0200 Subject: [PATCH 2/2] remove unnecessary padding --- lib/view/page/setting.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/view/page/setting.dart b/lib/view/page/setting.dart index 90558c2a..a430a246 100644 --- a/lib/view/page/setting.dart +++ b/lib/view/page/setting.dart @@ -154,7 +154,6 @@ class _SettingPageState extends State { _s.onServerDetailPage, style: grey, ), - contentPadding: const EdgeInsets.only(left: 17, right: 11), trailing: buildSwitch(context, _setting.showDistLogo), ); }