首页 > 解决方案 > 如何在查询 Flutter 按属性中按名称比较对象

问题描述

我在我的应用程序中添加了一个搜索栏,并尝试通过属性名称查询对象,但无法使其正常工作。

编辑 1) 未来功能:

 Widget _buildDiner() {
        return Padding(
            padding: const EdgeInsets.all(8.0),
            child: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
                  FutureBuilder(
                      future: _setDiner,
                      builder: (context, AsyncSnapshot snapshot) {
                        var diner = snapshot.data;



                        if (snapshot.data == null) {
                          return Center(child: CircularProgressIndicator());
                        } else {
                          var sponsoredDiner = diner
                              .where((e) => e.sponsored == 'Yes')
                              .toList();


                          return Column(
                            children: <Widget>[
                              _makeDiner(sponsoredDiner),
                              _buildCoupon(),
                              _buildVendors()
                            ],
                          );
                        }
                      })
                ]));
      }

食客=

class Diners {
  String keyword;
  int id;
  String name;
  String sponsored;

  Diners({
    this.keyword,
    this.id,
    this.name,
    this.sponsored
  });

  factory Diners.fromJson(Map<String, dynamic> parsedJson) {
    return Diners(
        keyword: parsedJson['keyword'] as String,
        id: parsedJson['id'],
        name: parsedJson['name'] as String,
        sponsored: parsedJson['sponsored'] as String
    );
  }
}

我正在比较 Diners 的两个实例(赞助和用餐者)

我使用此查询来尝试比较放入搜索栏中的文本:

final suggestionList = query.isEmpty
        ? sponsored
        : diners
            .where((p) => p.name.startsWith(query)).toList();

但我收到了这个错误

“类型'(动态)=>动态'不是'测试'类型'(晚餐)=>布尔'的子类型

我不知道为什么

标签: sortingflutterdartfilter

解决方案


推荐阅读