keywordTextSpans static method

dynamic keywordTextSpans(
  1. String word,
  2. String keyword,
  3. Color normalColor,
  4. Color keywordColor,
)

Implementation

static keywordTextSpans(String word, String keyword,Color normalColor,Color keywordColor) {
  List<TextSpan> spans = [];
  if (word.isEmpty) return spans;
  //搜索关键字高亮忽略大小写
  String wordL = word.toLowerCase(), keywordL = keyword.toLowerCase();
  List<String> arr = wordL.split(keywordL);
  TextStyle normalStyle = TextStyle(fontSize: 15, color: normalColor);
  TextStyle keywordStyle = TextStyle(fontSize: 15, color: keywordColor);
  int preIndex = 0;
  int valIndex = 0;
  for (int i = 0; i < arr.length; i++) {
    if (i != 0) {
      //搜索关键字高亮忽略大小写
      preIndex = wordL.indexOf(keywordL, preIndex);
      spans.add(TextSpan(
          text: word.substring(preIndex, preIndex + keyword.length),
          style: keywordStyle));
    }
    String val = arr[i];
    if (val.isNotEmpty) {
      valIndex = wordL.indexOf(val,valIndex);
      spans.add(TextSpan(text: word.substring( valIndex,val.length+valIndex), style: normalStyle));
    }
  }
  return spans;
}