Merge pull request #3375 from fufesou/fix/flutter_keyboard_compatibility
Fix/flutter keyboard compatibility
This commit is contained in:
commit
1c05c52b5d
@ -23,6 +23,10 @@ import '../../common/shared_state.dart';
|
|||||||
import './popup_menu.dart';
|
import './popup_menu.dart';
|
||||||
import './kb_layout_type_chooser.dart';
|
import './kb_layout_type_chooser.dart';
|
||||||
|
|
||||||
|
const _kKeyLegacyMode = 'legacy';
|
||||||
|
const _kKeyMapMode = 'map';
|
||||||
|
const _kKeyTranslateMode = 'translate';
|
||||||
|
|
||||||
class MenubarState {
|
class MenubarState {
|
||||||
final kStoreKey = 'remoteMenubarState';
|
final kStoreKey = 'remoteMenubarState';
|
||||||
late RxBool show;
|
late RxBool show;
|
||||||
@ -1538,11 +1542,16 @@ class _KeyboardMenu extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
var ffiModel = Provider.of<FfiModel>(context);
|
// Do not check permission here?
|
||||||
if (ffiModel.permissions['keyboard'] == false) return Offstage();
|
// var ffiModel = Provider.of<FfiModel>(context);
|
||||||
// Do not support peer 1.1.9.
|
// if (ffiModel.permissions['keyboard'] == false) return Offstage();
|
||||||
if (stateGlobal.grabKeyboard) {
|
if (stateGlobal.grabKeyboard) {
|
||||||
bind.sessionSetKeyboardMode(id: id, value: 'map');
|
if (bind.sessionIsKeyboardModeSupported(id: id, mode: _kKeyMapMode)) {
|
||||||
|
bind.sessionSetKeyboardMode(id: id, value: _kKeyMapMode);
|
||||||
|
} else if (bind.sessionIsKeyboardModeSupported(
|
||||||
|
id: id, mode: _kKeyLegacyMode)) {
|
||||||
|
bind.sessionSetKeyboardMode(id: id, value: _kKeyLegacyMode);
|
||||||
|
}
|
||||||
return Offstage();
|
return Offstage();
|
||||||
}
|
}
|
||||||
return _IconSubmenuButton(
|
return _IconSubmenuButton(
|
||||||
@ -1555,13 +1564,13 @@ class _KeyboardMenu extends StatelessWidget {
|
|||||||
|
|
||||||
mode() {
|
mode() {
|
||||||
return futureBuilder(future: () async {
|
return futureBuilder(future: () async {
|
||||||
return await bind.sessionGetKeyboardMode(id: id) ?? 'legacy';
|
return await bind.sessionGetKeyboardMode(id: id) ?? _kKeyLegacyMode;
|
||||||
}(), hasData: (data) {
|
}(), hasData: (data) {
|
||||||
final groupValue = data as String;
|
final groupValue = data as String;
|
||||||
List<KeyboardModeMenu> modes = [
|
List<KeyboardModeMenu> modes = [
|
||||||
KeyboardModeMenu(key: 'legacy', menu: 'Legacy mode'),
|
KeyboardModeMenu(key: _kKeyLegacyMode, menu: 'Legacy mode'),
|
||||||
KeyboardModeMenu(key: 'map', menu: 'Map mode'),
|
KeyboardModeMenu(key: _kKeyMapMode, menu: 'Map mode'),
|
||||||
KeyboardModeMenu(key: 'translate', menu: 'Translate mode'),
|
KeyboardModeMenu(key: _kKeyTranslateMode, menu: 'Translate mode'),
|
||||||
];
|
];
|
||||||
List<_RadioMenuButton> list = [];
|
List<_RadioMenuButton> list = [];
|
||||||
onChanged(String? value) async {
|
onChanged(String? value) async {
|
||||||
@ -1571,13 +1580,13 @@ class _KeyboardMenu extends StatelessWidget {
|
|||||||
|
|
||||||
for (KeyboardModeMenu mode in modes) {
|
for (KeyboardModeMenu mode in modes) {
|
||||||
if (bind.sessionIsKeyboardModeSupported(id: id, mode: mode.key)) {
|
if (bind.sessionIsKeyboardModeSupported(id: id, mode: mode.key)) {
|
||||||
if (mode.key == 'translate') {
|
if (mode.key == _kKeyTranslateMode) {
|
||||||
if (Platform.isLinux || pi.platform == kPeerPlatformLinux) {
|
if (Platform.isLinux || pi.platform == kPeerPlatformLinux) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var text = translate(mode.menu);
|
var text = translate(mode.menu);
|
||||||
if (mode.key == 'translate') {
|
if (mode.key == _kKeyTranslateMode) {
|
||||||
text = '$text beta';
|
text = '$text beta';
|
||||||
}
|
}
|
||||||
list.add(_RadioMenuButton<String>(
|
list.add(_RadioMenuButton<String>(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user