import 'package:chat/chat/dollar_text.dart'; import 'package:extended_text_library/extended_text_library.dart'; import 'package:flutter/material.dart'; import 'emoji_gif_text.dart'; import 'emoji_text.dart'; class MySpecialTextSpanBuilder extends SpecialTextSpanBuilder { /// whether show background for @somebody final bool showAtBackground; final bool isShowGif; final double emojiSize; MySpecialTextSpanBuilder({this.showAtBackground: false,this.isShowGif=true,this.emojiSize=20.0}); @override TextSpan build(String data, {TextStyle textStyle, onTap}) { var textSpan = super.build(data, textStyle: textStyle, onTap: onTap); return textSpan; } @override SpecialText createSpecialText(String flag, {TextStyle textStyle, SpecialTextGestureTapCallback onTap, int index}) { if (flag == null || flag == "") return null; ///index is end index of start flag, so text start index should be index-(flag.length-1) // if (isStart(flag, AtText.flag)) { // return AtText( // textStyle, // onTap, // start: index - (AtText.flag.length - 1), // showAtBackground: showAtBackground, // ); // } else if (isStart(flag, EmojiText.flag)) { // return EmojiText(textStyle, start: index - (EmojiText.flag.length - 1)); // } else if (isStart(flag, DollarText.flag)) { // return DollarText(textStyle, onTap, // start: index - (DollarText.flag.length - 1)); // } if (isStart(flag, EmojiText.flag)) { return EmojiText(textStyle, start: index - (EmojiText.flag.length - 1),emojiSize: emojiSize); } else if (isStart(flag, EmojiGifText.flag)) { print('EmojiGifText ----'); return EmojiGifText(textStyle, start: index - (EmojiGifText.flag.length - 1),isShowGif: isShowGif); }else if (isStart(flag, DollarText.flag)) { print('DollarText ----'); return DollarText(textStyle,onTap,start:index - (DollarText.flag.length - 1)); } return null; } }