如何在 canvas 上制作自定义可编辑文本框,其中背景随文本一起传播?
How to make custon editable textbox on a canvas in flutter in which background spreads with the text?
我没有在 flutter 中使用 canvas,但我认为可以通过 canvas 实现像图片中那样的编辑文本框。背景随着文本长度的增加而扩展,如果一行中的文本长度为0则没有背景。
如果您有任何代码或建议,请帮忙。
这里是代码:
class TextFieldTest extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.black,
body: SingleChildScrollView(
child: Container(
padding: EdgeInsets.symmetric(horizontal: 50),
child: TextField(
maxLines: 10,
keyboardType: TextInputType.multiline,
textAlign: TextAlign.center,
style: TextStyle(
wordSpacing: 5,
height: 2,
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 26,
background: Paint()
..color = Colors.blue
..style = PaintingStyle.stroke
..strokeWidth = 35
..strokeJoin = StrokeJoin.round,
),
),
),
),
);
}
}
strokeWidth 应大于 fontSize 以按您选择的颜色填充所有文本。
尝试使用它,以便最终获得更准确的结果。
我没有在 flutter 中使用 canvas,但我认为可以通过 canvas 实现像图片中那样的编辑文本框。背景随着文本长度的增加而扩展,如果一行中的文本长度为0则没有背景。
如果您有任何代码或建议,请帮忙。
这里是代码:
class TextFieldTest extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.black,
body: SingleChildScrollView(
child: Container(
padding: EdgeInsets.symmetric(horizontal: 50),
child: TextField(
maxLines: 10,
keyboardType: TextInputType.multiline,
textAlign: TextAlign.center,
style: TextStyle(
wordSpacing: 5,
height: 2,
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 26,
background: Paint()
..color = Colors.blue
..style = PaintingStyle.stroke
..strokeWidth = 35
..strokeJoin = StrokeJoin.round,
),
),
),
),
);
}
}
strokeWidth 应大于 fontSize 以按您选择的颜色填充所有文本。
尝试使用它,以便最终获得更准确的结果。