Открытие/закрытие экранной клавиатуры по нажатию на кнопку во Flutter
В проекте на Flutter необходимо реализовать открытие/закрытие экранной клавиатуры при нажатии на кнопку.
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('Заголовок'),
actions: <Widget>[
IconButton(
icon: Icon(Icons.keyboard),
onPressed: () {
// При нажатии на эту кнопку открыть клавиатуру
},
),
],
),
Смотрел уже плагины Flutter Keyboard Visibility и keyboard_visibility, но они только уведомляют о смене состояния клавиатуры. Есть ли какие то плагины с данной реализацией? Либо каким образом можно это сделать самому?
Ответы (2 шт):
В Flutter все есть из коробки...
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
FocusNode _focusNode = FocusNode();
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Заголовок'),
actions: <Widget>[
IconButton(
icon: Icon(Icons.keyboard),
onPressed: () {
if (_focusNode.hasFocus) {
FocusScope.of(context).unfocus();
} else {
FocusScope.of(context).requestFocus(_focusNode);
}
},
),
],
),
body: Container(
padding: EdgeInsets.all(20.0),
child: Column(
children: <Widget>[
TextFormField(
focusNode: _focusNode,
decoration: InputDecoration(labelText: 'Field'),
),
],
),
),
),
);
}
}
С учётом комментариев к ответу https://ru.stackoverflow.com/a/1168434/481 :
Скрытие виртуальной клавиатуры при подключённой физической - это функция ОС android. Скорее всего можно сделать костыли, для решения проблемы, но лучше изменить опцию в настройках, которая по-умолчанию включена.
На Samsung это можно сделать изменением настройки:
Настройки - Общие настройки - Физическая клавиатура - Отображение экранной клавиатуры.
