用列表 <Objects> 或列表<Map<String, String> 填充多选>
Fill Multiselect with List <Objects> or List<Map<String, String>>
也许有人经历过同样的事情,我试图用我的 Class 对象的列表数据填充多选,但它不允许我
List <Users> _datasource = ...(get data)
...
MultiSelect(
dataSource: _datasource,
textField: 'name',
valueField: 'id'
.... )
我看到它接受的数据源类型为:List<Map<String,String>>
,但我不知道如何转换我的 List<Users> to List<Map<String,String>>
,也许你遇到过并且可以与之合作我.
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,
};
}
提前致谢
您需要将 List<User>
转换为 List<Map<String, String>>
:
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}]
您可以尝试映射您的用户列表并将其转换为 List<Map<String,String>>
。类似于:
var data = _datasource.map((user) => user.toJson()).toList();
});
MultiSelect(
dataSource: data,
textField: 'name',
valueField: 'id'
.... )
也许有人经历过同样的事情,我试图用我的 Class 对象的列表数据填充多选,但它不允许我
List <Users> _datasource = ...(get data)
...
MultiSelect(
dataSource: _datasource,
textField: 'name',
valueField: 'id'
.... )
我看到它接受的数据源类型为:List<Map<String,String>>
,但我不知道如何转换我的 List<Users> to List<Map<String,String>>
,也许你遇到过并且可以与之合作我.
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,
};
}
提前致谢
您需要将 List<User>
转换为 List<Map<String, String>>
:
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}]
您可以尝试映射您的用户列表并将其转换为 List<Map<String,String>>
。类似于:
var data = _datasource.map((user) => user.toJson()).toList();
});
MultiSelect(
dataSource: data,
textField: 'name',
valueField: 'id'
.... )