Flutter_textfield實(shí)現(xiàn)富文本

textfield基本使用

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

簡(jiǎn)單富文本可以直接設(shè)置

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

image.png

修改文本顏色需要重寫(xiě) 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()  
#如若報(bào)屬性不符錯(cuò)誤   需重新運(yùn)行項(xiàng)目
image.png

多重富文本也在 TextSpan buildTextSpan({BuildContext context, TextStyle style , bool withComposing}) 方法中修改
針對(duì)富文本需求進(jìn)行 TextSpan

end

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容