如何用图像替换文本(是否可能在颤振中)

时间:2021-06-18 09:42:14

标签: flutter dart flutter-web

var replaced = text.replaceAll(regExp, '*');

我们可以用实际图像代替星号标记吗..

1 个答案:

答案 0 :(得分:0)

好的。所以你在本地存储了一堆表情符号。你必须用表情符号替换文本。

我没有完美的答案。但是您如何实现我可以展示的路径。 使用地图。当您想更改图像的文本时,必须有一对。所以你可以为它定义一张地图。一个键将是一个文本,值将是表情符号的路径。将您的文件夹视为 images,格式为 png

   Map<String, String> myData = {"like" : "images/like.png", "time": 
    "images/time.png"};

等等。像这样,您可以创建它的完整地图。如果限制为 30 -40 条记录,您将手动执行。

现在您可以对其进行操作。假设你有 String value = "我喜欢你的衬衫!"; 所以我们需要扫描字符串,然后搜索地图中的每个单词,如果找到则替换。 代码看起来像这样

void main() {
  //your value that you are going to scan
   String str = " I like your shirt";

 //Defining the map
    Map<String, String> data = {"like" : "images/like.png", "shirt" : 
    "images/shirt.png", "happy" : "images/happy.png"};


  //function that will do the changes and display 

  void replaceTextWithEmojis(String value, Map<String, String> data){

  
  //splitting the value into the array or list of items so we can iterate easily
  List<String> inputvalues = str.split(" ");
     //looping through the text
    for (int i =0; i<inputvalues.length; i++){
  
  //checking where that text is present in the emojis map or not.
  if(data.containsKey(inputvalues[i])){
  
  //this will replace the text with the path for that key
  inputvalues[i] = data[inputvalues[i]];
  }
} //end of the for loop
print(inputvalues);
}


replaceTextWithEmojis(str, data);
 }

这将替换为所需的值。但是你想在文本之间显示一个图像。那是多么困难的事情。我不认为你可以在颤振中做到这一点。或者就像您需要确定可替换文本的位置,然后断开字符串并将其存储在其他变量中。在断点处附加图像。所以在我们用地图替换的地方你可以添加一个 widget(child ImageProvider(inputvalue[i]));

我建议您使用 unicode 来制作表情符号。 您可以使用 unicode emjois 包:https://pub.dev/packages/emojis

它们还会为您提供更好的性能。