flutter - 在颤动中从地图中获取项目
问题描述
我正在尝试使用地图从字符串中获取单词并将它们映射到小部件。我已经尝试过了,但我的问题是 doe 和妹妹这两个词的键得到相同的键,所以我最终只得到其中一个
String theText = "我的名字叫 doe from http.doe.com
,我的妹妹是selly。doe 和 saqil 不是 koiter 的姐妹朋友。";
wordsMap = Map.fromIterable(text.split(' '),
key: (v) => v,
value: (v) => TextSpan(text: v));
所以我尝试了下面的代码
Map mapMyWord = {};
// var wordsMap;
var splitForSize = text.split(' ').toList();
for(var t = 0;t<= splitForSize.length-1;t++){
mapMyWord[t] = {'$t':TextSpan(text: splitForSize[t])};
}
但是在第二个代码中,当我尝试访问mapMyWord.values.toList()
它时,它再次返回了地图数据列表
[{0: TextSpan("my")}, {1: TextSpan("name")}, {2: TextSpan("is")}, {3: TextSpan("doe")}, {4: TextSpan("````http.codeish.com````,")}, ... ,{19: TextSpan("koiter")}]
所以我的主要问题是如何从这里获取值。
解决方案
它返回地图,因为您正在使用此行分配地图:
mapMyWord[t] = {'$t':TextSpan(text: splitForSize[t])};
所以最后你有一个Map<Int, Map<String, TextSpan>>
.
如果您打算将该句子的单词转换为 TextSpan 列表,则方法如下:
var textSpanList = text.split(" ").map((word) => TextSpan(text: word)).toList();
如果您想直接在小部件树中执行此操作,可以这样做:
children: <Widget>[
for(var word in text.split(" "))
Text(word),
]
注意:最后一个片段需要 pubspec.yaml 中的最低 SDK 2.2.2
推荐阅读
- request - 一个请求参数可以在一个url中取多个值吗?
- mongodb - 带有构面的MongoDB聚合计数太慢了
- javascript - 使用 Angular7 直接下载“文件”
- css - 制表符过滤器 - 如何添加特定的 CSS 元素
- r - R基于列和列表合并两个数据帧
- java - 寻找大 O 复杂度。三种算法
- javascript - 如何使用 ng2-file-upload 以角度上传 .ply 文件
- python - Python 中的类型注释是否强制执行静态类型检查?
- php - PHP发生错误时如何获取所有变量
- c# - 如何使用来自 MVC5 (asp.net) 的依赖注入的 netstandard 2.0 库