From 5533ebf86a26ffdd2ae90c79ef9b9b5a8c0108ae Mon Sep 17 00:00:00 2001 From: fufesou Date: Sat, 6 Apr 2024 11:37:31 +0800 Subject: [PATCH] Fix. Remote toolbar, keyboard mode (#7626) Move modeOnly to the scope it is needed. Get modeOnly everytime of dropdown menu. Signed-off-by: fufesou --- .../lib/desktop/widgets/remote_toolbar.dart | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/flutter/lib/desktop/widgets/remote_toolbar.dart b/flutter/lib/desktop/widgets/remote_toolbar.dart index 583d0750b..70a5b13a8 100644 --- a/flutter/lib/desktop/widgets/remote_toolbar.dart +++ b/flutter/lib/desktop/widgets/remote_toolbar.dart @@ -1626,19 +1626,7 @@ class _KeyboardMenu extends StatelessWidget { Widget build(BuildContext context) { var ffiModel = Provider.of(context); if (!ffiModel.keyboard) return Offstage(); - // If use flutter to grab keys, we can only use one mode. - // Map mode and Legacy mode, at least one of them is supported. - String? modeOnly; - if (isInputSourceFlutter) { - if (bind.sessionIsKeyboardModeSupported( - sessionId: ffi.sessionId, mode: kKeyMapMode)) { - modeOnly = kKeyMapMode; - } else if (bind.sessionIsKeyboardModeSupported( - sessionId: ffi.sessionId, mode: kKeyLegacyMode)) { - modeOnly = kKeyLegacyMode; - } - } - final toolbarToggles = toolbarKeyboardToggles(ffi) + toolbarToggles() => toolbarKeyboardToggles(ffi) .map((e) => CkbMenuButton( value: e.value, onChanged: e.onChanged, child: e.child, ffi: ffi)) .toList(); @@ -1649,17 +1637,17 @@ class _KeyboardMenu extends StatelessWidget { color: _ToolbarTheme.blueColor, hoverColor: _ToolbarTheme.hoverBlueColor, menuChildrenGetter: () => [ - keyboardMode(modeOnly), + keyboardMode(), localKeyboardType(), inputSource(), Divider(), viewMode(), Divider(), - ...toolbarToggles, + ...toolbarToggles(), ]); } - keyboardMode(String? modeOnly) { + keyboardMode() { return futureBuilder(future: () async { return await bind.sessionGetKeyboardMode(sessionId: ffi.sessionId) ?? kKeyLegacyMode; @@ -1679,6 +1667,19 @@ class _KeyboardMenu extends StatelessWidget { await ffi.inputModel.updateKeyboardMode(); } + // If use flutter to grab keys, we can only use one mode. + // Map mode and Legacy mode, at least one of them is supported. + String? modeOnly; + if (isInputSourceFlutter) { + if (bind.sessionIsKeyboardModeSupported( + sessionId: ffi.sessionId, mode: kKeyMapMode)) { + modeOnly = kKeyMapMode; + } else if (bind.sessionIsKeyboardModeSupported( + sessionId: ffi.sessionId, mode: kKeyLegacyMode)) { + modeOnly = kKeyLegacyMode; + } + } + for (InputModeMenu mode in modes) { if (modeOnly != null && mode.key != modeOnly) { continue;