Flutter_textfield实现富文本

textfield基本使用

TextField(
  maxLines: 100,
  textAlign: TextAlign.right,
  keyboardType: TextInputType.text,
  decoration: InputDecoration(
    contentPadding: EdgeInsets.fromLTRB(10, 0, 0, 0),
    border: InputBorder.none,
    hintText: "请输入",
    hintStyle: TextStyle(fontSize: 14,color: Colors.grey),
  ),
),

简单富文本可以直接设置

var  _editingController = TextEditingController()
_editingController.value = TextEditingValue(text: str, composing: TextRange(start: 1, end: 13));

image.png

修改文本颜色需要重写 buildTextSpan 方法, 更改 TextStyle

class OverTextEditingController extends TextEditingController{
  
  @override
  TextSpan buildTextSpan({BuildContext context, TextStyle style , bool withComposing}) {
   if (!value.isComposingRangeValid || !withComposing) {
      return TextSpan(style: style, text: text);
    }
    final TextStyle composingStyle = style.merge(
      const TextStyle(Colors: Colors.blue),
    );
    return TextSpan(
      style: style,
      children: <TextSpan>[
        TextSpan(text: value.composing.textBefore(value.text)),
        TextSpan(
          style: composingStyle,
          text: value.composing.textInside(value.text),
        ),
        TextSpan(text: value.composing.textAfter(value.text)),
      ],
    );
  }
}
var  _editingController = TextEditingController()
要改成
var  _editingController = OverTextEditingController()  
#如若报属性不符错误   需重新运行项目
image.png

多重富文本也在 TextSpan buildTextSpan({BuildContext context, TextStyle style , bool withComposing}) 方法中修改
针对富文本需求进行 TextSpan

end

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容