どうも、ちょげ(@chogetarou)です。
TextFieldでキーボードを表示するボタンを実装する方法を紹介します。
方法

キーボードを表示するボタンを実装するには、FocusNodeとFocusScopeを使います。
まず、FocusNodeのインスタンスを持つ変数を用意します。
var focusNode = FocusNode();
次にこの変数を使用するテキストフィールドに設定します。
TextField(
focusNode: focusNode,
)
最後にボタンを用意し、ボタンのタップ処理で「FocusScope.of(context).requestFocus(focusNode)」を呼び出します。(focusNodeはTextFieldに設定した変数)
ElevatedButton(
onPressed: () => FocusScope.of(context).requestFocus(focusNode),
child: Text('Show Keyboard'),
)
これでTextFieldでキーボードを表示するボタンを実装することが出来ます。
使用例
var focusNode = FocusNode();
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: TextField(
focusNode: focusNode,
decoration: InputDecoration(
border: OutlineInputBorder(),
),
),
),
ElevatedButton(
onPressed: () => FocusScope.of(context).requestFocus(focusNode),
child: Text('Show Keyboard'),
)
],
),
),
);
}
まとめ
TextFieldでキーボードを表示するボタンを実装するには、「FocusNode」と「FocusScope」を使います。
TextFieldに設定した「FocusNode」を、FocusScopeのrequestFocusメソッドで呼び出すことで、キーボードを表示します。
コメント