Hibok
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

53 line
2.0 KiB

  1. import 'package:chat/chat/dollar_text.dart';
  2. import 'package:extended_text_library/extended_text_library.dart';
  3. import 'package:flutter/material.dart';
  4. import 'emoji_gif_text.dart';
  5. import 'emoji_text.dart';
  6. class MySpecialTextSpanBuilder extends SpecialTextSpanBuilder {
  7. /// whether show background for @somebody
  8. final bool showAtBackground;
  9. final bool isShowGif;
  10. final double emojiSize;
  11. MySpecialTextSpanBuilder({this.showAtBackground: false,this.isShowGif=true,this.emojiSize=20.0});
  12. @override
  13. TextSpan build(String data, {TextStyle textStyle, onTap}) {
  14. var textSpan = super.build(data, textStyle: textStyle, onTap: onTap);
  15. return textSpan;
  16. }
  17. @override
  18. SpecialText createSpecialText(String flag,
  19. {TextStyle textStyle, SpecialTextGestureTapCallback onTap, int index}) {
  20. if (flag == null || flag == "") return null;
  21. ///index is end index of start flag, so text start index should be index-(flag.length-1)
  22. // if (isStart(flag, AtText.flag)) {
  23. // return AtText(
  24. // textStyle,
  25. // onTap,
  26. // start: index - (AtText.flag.length - 1),
  27. // showAtBackground: showAtBackground,
  28. // );
  29. // } else if (isStart(flag, EmojiText.flag)) {
  30. // return EmojiText(textStyle, start: index - (EmojiText.flag.length - 1));
  31. // } else if (isStart(flag, DollarText.flag)) {
  32. // return DollarText(textStyle, onTap,
  33. // start: index - (DollarText.flag.length - 1));
  34. // }
  35. if (isStart(flag, EmojiText.flag)) {
  36. return EmojiText(textStyle, start: index - (EmojiText.flag.length - 1),emojiSize: emojiSize);
  37. }
  38. else if (isStart(flag, EmojiGifText.flag)) {
  39. print('EmojiGifText ----');
  40. return EmojiGifText(textStyle, start: index - (EmojiGifText.flag.length - 1),isShowGif: isShowGif);
  41. }else if (isStart(flag, DollarText.flag)) {
  42. print('DollarText ----');
  43. return DollarText(textStyle,onTap,start:index - (DollarText.flag.length - 1));
  44. }
  45. return null;
  46. }
  47. }