我不明白如何为我的自定义小部件显示键盘。
我想构建一个可以接收键盘事件并在画布上绘制文本的自定义小部件。
我尝试过 docs 中描述的方法但没有结果(尽管我能够在模拟器上从我的电脑键盘接收按键事件而不显示软键盘。它也没有在真实设备上显示键盘)
这是我的代码,我认为应该在点击时弹出键盘:
class CrossGridWidget extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _CrossGridState();
}
}
class _CrossGridState extends State<CrossGridWidget> {
@override
Widget build(BuildContext context) {
return FocusScope(
debugLabel: 'Scope',
autofocus: true,
child: Focus(
debugLabel: 'Focus',
onKey: (node, event) {
if (event.logicalKey.keyLabel.isNotEmpty) {
print(event.logicalKey);
return KeyEventResult.handled;
}
return KeyEventResult.ignored;
},
child: _buildGrid()
),
);
}
Widget _buildGrid() {
return Builder(
builder: (context) => GestureDetector(onTapDown: (details) {
final focusNode = Focus.of(context);
print(focusNode.hasFocus);
if (!focusNode.hasFocus) {
focusNode.requestFocus();
}
}, child: Consumer<Game>(
builder: (context, value, child) {
return SizedBox(
height: 200,
width: 200,
child: Text('test'));
},
)),
);
}
}