嗨,我是扑扑和飞镖的新手。我在排版地图方面遇到困难。我在 Firestore 上保存了一些数据,格式为HashMap<String,List<String>>. 在我的 Flutter 应用程序中,当我获取这些数据时,我以LinkedHashMap<dynamic,dynamic>. 我想将其转换LinkedHashMap为HashMap<String,List<String>>. 请帮忙。
LinkedHashMap<dynamic,dynamic> mapUserWatchlistCompanies= documentSnapshot.data['Watchlist']; // Fetched data.
HashMap<String,List<String>> hashMapUserWatchlist = ???//How can it be converted? Need help here.
Run Code Online (Sandbox Code Playgroud)
dart 中的类型转换与您在 Java 或 Swift 中获得的有点不同。在飞镖中,您必须在dynamic涉及时正确投射所有内容。
现在,在您的情况下,您会得到一个LinkedHashMap<dynamic, dynamic>,现在在 JSON 情况下,可以安全地假设键始终是String值,但value键可以是多种类型(数字、字符串、布尔值、映射或列表)。
因此,如果您有以下形式的 JSON:
{
"keyOne": ["One", "Two","whatever"],
"keyTwp": ["roses", "are", "red"],
"keyThree":["You", "know", "nothing", "john", "nonw"]
}
Run Code Online (Sandbox Code Playgroud)
这是 a HashMap<String, List<String>>,但 dart 最初会得到 a LinkedHashMap<dynamic, dynamic>,您可以使用以下代码安全地转换它:
LinkedHashMap<dynamic, dynamic> theParsedOne = .....
HashMap<String, List<String>> newMap = HashMap.from(theParsedOne.map((key, value) {
List<dynamic> values = List.from(value);
return MapEntry(
key.toString(),
values.map((theValue) {
return theValue.toString();
}).toList());
}));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7257 次 |
| 最近记录: |