颤振如何显示列表中的单个值?

时间:2020-04-09 19:58:22

标签: flutter dart

我正在尝试从数组中筛选数据,然后只需要从数据中获取单个值。它显示的是过滤后的数据,但需要知道如何从该数据中显示一个值?

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',
  ),
];

2 个答案:

答案 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);
  }

我希望有帮助