我有一个CustomPainter扩展类。到目前为止,我只绘制带有一些静态文本的矩形。现在我想稍微改进一下,希望我的Flutter-App的用户可以编辑这个文本。
我添加了一个TextEditingController到我的对象类,并尝试:
TextField textField = TextField(
controller: object.textController,
);
textField.createRenderObject(context).paint;
textFieldPainter.paint(canvas, Offset.zero);
}
不幸的是,没有什么比textField更好的了。在Flutter中的createrenderobject函数。所以我想知道如何让我的受控文本;工作。
我还使用了TextSpan()。但是我不能这样设置控制器
以下步骤不是最好的解决方案,但您可以尝试这个解决方案。
步骤:
- 创建一个OverlayEntry,用FocusNode和TextEditController添加一个(隐藏的)TextField。
- 添加叠加条目后,请求聚焦在focusNode上,这样键盘将打开。
- 为TextField添加onChanged,并在文本更改时以某种方式通知画家(例如valueNotifier)。 在TextPainer中使用TextEditController。文本值
对于我来说,以下解决方案适合:我构建了一个函数来检查点击是否在矩形的尺寸范围内完成。如果是,则弹出"属性"对话框;打开(目前只有文本),这里的文本现在也可以更改。
我知道,这只是一个变通方法,并不是我问题的真正解决方案,但也许这种方法对其中一个有帮助。