如何在Flutter的CustomPainter中编写可编辑的文本字段



我有一个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。文本值

对于我来说,以下解决方案适合:我构建了一个函数来检查点击是否在矩形的尺寸范围内完成。如果是,则弹出"属性"对话框;打开(目前只有文本),这里的文本现在也可以更改。

我知道,这只是一个变通方法,并不是我问题的真正解决方案,但也许这种方法对其中一个有帮助。

相关内容

  • 没有找到相关文章

最新更新