import 'package:extended_text_library/extended_text_library.dart'; import 'package:flutter/material.dart'; ///emoji/image text class EmojiText extends SpecialText { static const String flag = "["; final int start; final double emojiSize; EmojiText(TextStyle textStyle, {this.start, this.emojiSize=20.0}) : super(EmojiText.flag, "]", textStyle); @override InlineSpan finishText() { var key = toString(); if (EmojiUitl.instance.emojiMap.containsKey(key)) { //fontsize id define image height //size = 30.0/26.0 * fontSize final double size = emojiSize; // ScreenUtil().setWidth(emojiSize); ///fontSize 26 and text height =30.0 //final double fontSize = 26.0; return ImageSpan(AssetImage(EmojiUitl.instance.emojiMap[key]), actualText: key, imageWidth: size, imageHeight: size, start: start, fit: BoxFit.contain, margin: EdgeInsets.only(left: 2.0, top: 2.0, right: 2.0)); } return TextSpan(text: toString(), style: textStyle); } } class EmojiUitl { ///emoji final Map _emojiMap = new Map(); Map get emojiMap => _emojiMap; final String _emojiFilePath = "assets/images/emojiface"; static EmojiUitl _instance; static EmojiUitl get instance { if (_instance == null) _instance = new EmojiUitl._(); return _instance; } EmojiUitl._() { for (int i = 1; i < 87; i++) { _emojiMap[EmojiText.flag+"$i]"] = "$_emojiFilePath/$i.png"; } } }