var replaced = text.replaceAll(regExp, '*');
我们可以用实际图像代替星号标记吗..
答案 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
它们还会为您提供更好的性能。