我正在尝试从数组中筛选数据,然后只需要从数据中获取单个值。它显示的是过滤后的数据,但需要知道如何从该数据中显示一个值?
class _ViewPostScreenState extends State<ViewPostScreen> {
List showPost;
String data;
@override
void initState(){
super.initState();
print(widget.id);
showPost = posts.where((i) => i.id == widget.id).toList();
data = showPost.toString();
print(data);
}
数据的响应或打印输出是此I/flutter ( 7374): [{id: 0, authorName: Umaiz Khan, authorImageUrl: assets/images/user0.png, timeAgo: 5 min, imageUrl: assets/images/post0.jpg}]
我需要知道如何从这些数据中显示authorName?
类似这样的打印内容(data.authorName);尝试这样做但不起作用。
这里的数据看起来像其他文件中的
class Post {
String authorName;
String authorImageUrl;
String timeAgo;
String imageUrl;
int id;
Post({
this.authorName,
this.authorImageUrl,
this.timeAgo,
this.imageUrl,
this.id,
});
@override
String toString() {
return '{id: $id, authorName: $authorName, authorImageUrl: $authorImageUrl, timeAgo: $timeAgo, imageUrl: $imageUrl}';
}
}
final List<Post> posts = [
Post(
id: 0,
authorName: 'Umaiz Khan',
authorImageUrl: 'assets/images/user0.png',
timeAgo: '5 min',
imageUrl: 'assets/images/post0.jpg',
),
Post(
id: 1,
authorName: 'Saad ahmed',
authorImageUrl: 'assets/images/user1.png',
timeAgo: '10 min',
imageUrl: 'assets/images/post1.jpg',
),
Post(
id: 2,
authorName: 'Hiba',
authorImageUrl: 'assets/images/user4.png',
timeAgo: '10 min',
imageUrl: 'assets/images/post2.jpg',
),
];
答案 0 :(得分:0)
将字符串数据更改为发布数据
数据= showPost [0];
答案 1 :(得分:0)
当您要基于其中的对象的值来获取任何列表时,可以始终使用此for循环,在这种情况下,widget.id应等同于帖子的ID
@override
void initState() {
super.initState();
print(widget.id);
Post getPost(int postID) {
for (int i = 0; i < posts.length; i++) {
if (posts.elementAt(i).id == postID) {
return posts.elementAt(i);
}
}
return null;
}
print(getPost(widget.id).authorName);
}
我希望有帮助