gpt4 book ai didi

flutter - Flutter中使用自定义键盘实现文本编辑功能

转载 作者:行者123 更新时间:2023-12-02 03:08:16 26 4
gpt4 key购买 nike

我已经实现了自定义键盘(在表格->卡片->按钮小部件的帮助下),如下所示,如果用户按下按钮,那么我捕获文本并将其显示在屏幕上。

enter image description here

通过使用此功能,用户可以输入数据,但无法编辑数据。在这种情况下如何实现文本编辑功能?

我尝试使用 TextField 小部件来适应我的情况,它提供了包括文本编辑在内的所有功能。但它不允许使用自定义键盘。

最佳答案

您可以使用 TextFieldreadOnlyshowCursor 属性,如下所示:

TextField(
controller: _textController,
readOnly: true,
showCursor: true,
),

然后您可以替换所选文本或插入新文本,如下所示:

@override
void initState() {
super.initState();
_textController = TextEditingController();
}

_insertText(String textToInsert) {
if (_textController.selection.start >= 0) {
int newPosition = _textController.selection.start + textToInsert.length;
_textController.text = _textController.text.replaceRange(
_textController.selection.start,
_textController.selection.end,
textToInsert,
);
_textController.selection = TextSelection(
baseOffset: newPosition,
extentOffset: newPosition,
);
} else {
_textController.text += textToInsert;
}
}

Widget _buildRow(List<String> texts) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: texts
.map((text) => RaisedButton(
child: Text(text), onPressed: () => _insertText(text)))
.toList());
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Calc")),
body: Column(
children: <Widget>[
Padding(
padding: EdgeInsets.all(16.0),
child: TextField(
controller: _textController,
readOnly: true,
showCursor: true,
),
),
_buildRow(["1", "2", "3"]),
_buildRow(["4", "5", "6"]),
_buildRow(["7", "8", "9"]),
],
),
);
}

关于flutter - Flutter中使用自定义键盘实现文本编辑功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58406522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com