【问题标题】:Fill Multiselect with List <Objects> or List<Map<String, String>>用 List <Objects> 或 List<Map<String, String>> 填充多选
【发布时间】:2020-06-26 15:40:34
【问题描述】:

也许有人经历过同样的事情,我试图用我的类对象列表的数据填充多选,但它不允许我

List <Users> _datasource = ...(get data)
...
MultiSelect(
  dataSource: _datasource,
  textField: 'name',
  valueField: 'id'
  .... )

我已经看到它接受的数据源类型是:List&lt;Map&lt;String,String&gt;&gt;,但是我不知道如何转换我的List&lt;Users&gt; to List&lt;Map&lt;String,String&gt;&gt;,也许你已经发生了并且可以与我合作。

 class UserModel {
  UserModel({
    this.id,
    this.name = '',
  });
  String id;
  String name;
  factory UserModel.fromJson(Map<String, dynamic> json) => UserModel(
        id: json["id"].toString(),
        name: json["name"],
      );
  Map<String, dynamic> toJson() => {
        "id": id,
        "name": name,
      };
}

提前致谢

【问题讨论】:

  • 嘿,你能告诉我们你的用户模型是什么样的吗?
  • 当然!类 UserModel { UserModel ({ this.id, this.name = '', });字符串标识;字符串名称;工厂 UserModel .fromJson(Map json) => UserModel (id: json["id"].toString(), name: json["name"], ); Map toJson() => { "id": id, "name": name, }; }

标签: flutter dart multi-select


【解决方案1】:

您可以尝试映射您的用户列表并将其转换为List&lt;Map&lt;String,String&gt;&gt;。比如:

var data = _datasource.map((user) => user.toJson()).toList();
});

MultiSelect(
  dataSource: data,
  textField: 'name',
  valueField: 'id'
  .... )

【讨论】:

  • 如果多选对我有用的话!非常感谢!
【解决方案2】:

您需要将您的List&lt;User&gt; 转换为List&lt;Map&lt;String, String&gt;&gt;

List<User> users = ...(get data)
List<Map<String, String>> datasource = users.map((user) => {user.id: user.name}).toList();
// Or using spread operator :
List<Map<String, String>> datasource = [...users.map((user) => {user.id: user.name})];
// Or using collection for :
List<Map<String, String>> datasource = [for (final user in users) {user.id: user.name}]

【讨论】:

  • 这个选项很接近,但我没有设法生成多选使用的列表。但是,我认为它适用于另一个功能,我不明白 .map 谢谢!
猜你喜欢
  • 2020-10-28
  • 2018-09-22
  • 1970-01-01
  • 2020-01-26
  • 1970-01-01
  • 2021-03-25
  • 2020-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多