[英]How to add a map into List of maps?
假設我有這個地圖列表:
List values = [
{
'icon': FontAwesomeIcons.book,
'title': 'A',
'books': [
{'author': 'Max', 'age': 30},
{'author': 'Dani', 'age': 45}
]
},
{
'icon': FontAwesomeIcons.book,
'title': 'B',
'books': [],
}
];
如何檢查這本書是否存在於標題 'A' {'author': 'Steve', 'age': 28},
如果不存在如何添加。
編輯:
我想要達到的結果是:
List values = [
{
'icon': FontAwesomeIcons.book,
'title': 'A',
'books': [
{'author': 'Max', 'age': 30},
{'author': 'Dani', 'age': 45},
{'author': 'Steve', 'age': 28}
]
},
{
'icon': FontAwesomeIcons.book,
'title': 'B',
'books': [],
}
];
您可以使用.firstWhere
來查找項目,例如
final result = values.firstWhere(
(element) => element["title"] == "A",
orElse: () => null,
);
print(result);
if (result == null) {
values.add({
'icon': FontAwesomeIcons.book,
'title': 'A',
'books': [
{'author': 'Max', 'age': 30},
{'author': 'Dani', 'age': 45}
]
});
}
print(values);
我強烈推薦使用數據模型。 它會讓你的工作更輕松。
class DataModel {
String? title;
List<Books>? books;
DataModel({this.title, this.books});
DataModel.fromJson(Map<String, dynamic> json) {
title = json['title'];
if (json['books'] != null) {
books = <Books>[];
json['books'].forEach((v) {
books!.add(new Books.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['title'] = this.title;
if (this.books != null) {
data['books'] = this.books!.map((v) => v.toJson()).toList();
}
return data;
}
}
class Books {
String? author;
int? age;
Books({this.author, this.age});
Books.fromJson(Map<String, dynamic> json) {
author = json['author'];
age = json['age'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['author'] = this.author;
data['age'] = this.age;
return data;
}
}
使用此 model 時,您可以輕松轉換和編輯數據:
List<DataModel> list = [];
for(final item in values){
list.add(DataModel.fromJson(item));
}
final bookExcists = list.any((book) => book.title == 'A');
if(bookExcists){
list.firstWhere((book) => book.title == 'A').books?.add(Books.fromJson({'author': 'Steve', 'age': 28}));
}
for(final item in list){
print(item.toJson());
}
// Check by title final bookExcists = values.any((book) => book['title'] == 'A'); if(!bookExcists){ values.add({ 'icon': FontAwesomeIcons.book, 'title': 'A', 'books': [ {'author': 'Max', 'age': 30}, {'author': 'Dani', 'age': 45} ] }); } print(values);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.