flutter - 迭代槽图> 在 Dart Flutter 中
问题描述
我有 2 个数据模型。userDataModel
和PostDataModel
。_
用户可能有多个帖子,所以我希望有以下获取结构:
Map<userDataModel,List<PostDataModel>> = data
我可以使用索引遍历数据吗?(用户索引,然后发布索引?)
类似for(user, data in data){}
或类似data[0][0]
的东西最后,我想要一个所有帖子的列表视图,当时只有一个用户
我也想知道如何打印数据,因为打印数据只返回实例。
解决方案
首先,使用您提供的结构Map<userDataModel,List<PostDataModel>>
,您必须有两个嵌套循环。为了能够遍历所有这些,您将需要一些如下代码:
void main() {
var data = Map<UserDataModel, List<PostDataModel>>();
data.forEach((user, posts) {
for (var post in posts) {
print(post.name);
print(user.id);
}
});
}
class UserDataModel {
int id;
}
class PostDataModel {
String name;
}
PostDataModel
但是,正如您提到的,由于您的帖子属于用户,因此我会将UserDataModel
. 然后,您的数据最终看起来会有些不同:
void main() {
var data = List<UserDataModel>();
data.add(UserDataModel(1, [PostDataModel("one"),PostDataModel("two")]));
data.add(UserDataModel(2, [PostDataModel("three"),PostDataModel("four")]));
for (var user in data) {
for (var post in user.posts) {
print(user);
print(post);
}
}
}
class UserDataModel {
int id;
UserDataModel(this.id, this.posts);
List<PostDataModel> posts;
@override
String toString() {
var result = "";
result += "Id: $id\n";
var count = 0;
for(var post in posts) {
result += "Post $count, $post";
}
return result;
}
}
class PostDataModel {
String name;
PostDataModel(this.name);
@override
String toString() {
return "Name: $name\n";
}
}
这取决于您的后端结构,但我会建议第二种方式。
作为对问题第二部分的回答,请查看方法toString
。如果您覆盖它,您可以自定义类的显示方式,例如,当您使用print(userDataModel
. 例如,我创建了这些类,因此为您自己的类定制它们。
事实上,在最后一个示例中,您可以data[0].posts[0]
按照您的要求访问您的帖子。
推荐阅读
- java - 用于 Command+T 的 JavaFX 组合键(新选项卡)
- r - 来自 Outlook 电子邮件的 R 脚本触发器
- git - 创建新的 GIT 存储库
- associations - Sequelize BelongsToMany 将 foreignKey 设置为 primaryKey
- node.js - 循环中的nodejs fs.rename(如何正确使用promises)
- api - 在 Ionic 3 中使用 tus 将视频上传到 Vimeo
- c# - 绑定 x:Load,更新绑定值不会加载控件 (UWP)
- c# - 如何将磁盘可用空间性能计数器添加到 Azure Application Insights?
- java - 用Java打印二维对象数组?
- javascript - Javascript:不支持属性或方法“hasAttribute”