【问题标题】:Flutter how to filter data by 1 value?Flutter如何按1个值过滤数据?
【发布时间】:2020-07-22 06:46:13
【问题描述】:

我需要在我的应用程序中过滤数据,但它显示的错误是我正在做的。

它的打印 [Instance of 'Post'] 现在我需要打印所有值

class _FilterScreenState extends State<FilterScreen> {

List showPost;

  @override
  void initState(){
    super.initState();
    print(widget.id);
    showPost = posts.where((i) => i.id == widget.id).toList();
    print(showPost);

  }

我需要过滤id 等于我的widget.id 的数组

在其他文件上,数据如下所示

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

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    您可以覆盖 Post 类的 toString() 方法,如下所示

    class Post{
      int id;
      String authorName;
      String authorImageUrl;
      String timeAgo;
      String imageUrl;
      Post({this.id,this.authorName,this.authorImageUrl,this.timeAgo,this.imageUrl});
    
    
        @override
      String toString( ) {
        return 'Post{id: $id, authorName: $authorName, authorImageUrl: $authorImageUrl, timeAgo: $timeAgo, imageUrl: $imageUrl}';
      }
    
    }
    

    【讨论】:

    • 在这里查看完成的代码并在控制台查看输出dartpad.dev/54426eaafb403a8f6f9de7ccc6a6be29
    • 谢谢,如果可能的话,你能告诉我如何打印一个值吗?打印(showPost.toString());因为如果我只需要打印 authorName ,这将显示整个帖子。再次感谢
    • @ShahnazRaheem 只返回 return 'authorName: $authorName';在 toString() 方法中,而不是完整的数据。如果你观察它在 toString() 中发生的事情,你会自己找到答案。
    • 不,我只需要显示完整数据中的一个值。在 toStrint() 中,它显示了所有字段,这很好,但在我们调用 toString() 的第一个屏幕上,只需要显示过滤数据中的一个值。
    • 当我们这样打印时 print(showPost.toString());类似 print(showPost.toString().authorName);从所有值中都需要显示一个
    【解决方案2】:

    重写类 Post 的函数 toString。您需要显示的返回值。

      @override
      String toString() {
        return '$id - $authorName';
      }
    

    【讨论】:

    • 抱歉,看不懂这个,能多解释一下怎么加这个吗?
    • "它的打印 ['Post' 实例] 现在我需要打印所有值" -> 你可以尝试运行上面的代码,如果工作正常,我会为你解释:D
    • 对不起,我的错误我在错误的地方添加了这个谢谢。可以用json格式打印吗?
    • 你可以尝试在函数toString上使用jsonEncode来格式化json。
    猜你喜欢
    • 2022-09-27
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    相关资源
    最近更新 更多