将列表<Model>添加到列表<Model>内的列表



我的项目中有三个模型,LibraryModelLibraryContentsModelBooksModel

LibraryModel:本地JSON文件的模型。

BooksModel:一个SQLite数据库模型。

LibraryContentsModel:我创建的一个模型,用于搜索和过滤SQLite数据库。


LibraryModel:

class LibraryModel {
final String? title;
final String? fullTitle;
final String? subject;
final int? id;
final int? count;
final String? image;
final String? dbName;
final String? part;
bool? isSelected;
LibraryModel({
this.title,
this.fullTitle,
this.subject,
this.id,
this.count,
this.image,
this.dbName,
this.part,
this.isSelected,
});
}

BooksModel:

class BooksModel {
final int? id;
final String? pageTitle;
final String? pageText;
final String? footTitle;
BooksModel({
this.id,
this.pageTitle,
this.pageText,
this.footTitle,
});
}

LibraryContentsModel:

class LibraryContentsModel {
int? id;
String? title;
String? part;
String? dbName;
List<BooksModel>? booksList;
LibraryContentsModel({
this.id,
this.title,
this.part,
this.dbName,
this.booksList,
});
}

问题:

我需要将SQLite数据库中的数据插入到LibraryContetnsModel中的booksList参数中,该参数已经在LibraryModel中定义为表SQLite的名称,每个表都按顺序包含数据。

提取代码:

Future loadLibrary() async {
setState(() => isLoad = true);
try {
libraryList.addAll(await LibraryService.instance.getLibrary());
for (var item in libraryList) {
booksList
.addAll(await DatabaseService.instance.getBooks(item.dbName ?? ""));
libraryContentsList.add(
LibraryContentsModel(
id: item.id,
title: item.title,
part: item.part,
dbName: item.dbName,
// booksList: [booksList].expand((element) => element).toList(), <-- When I run this line get me exception
),
);
}
} catch (e) {
print(e.toString());
}
setState(() => isLoad = false);
}

编辑

我需要像这个例子:

LibraryModel:
id: 1
title: "Clean Code"
part: "2nd Edition"
dbName: "clean_code"
...
BooksModel:
id: 115
pageTitle: "Test Automation Pyramid"
pageText: "Professional developers employ the discipline of Test Driven Development...."
footTitle: "[COHN09] pp.311-312"
LibraryContentsModel:
id: LibraryModel.id = 1
title: LibraryModel.title = "Clean Code"
part: LibraryModel.part = "2nd Edition"
dbName: LibraryModel.dbName = "clean_code"
booksList: BooksModel(
id: 115
pageTitle: "Test Automation Pyramid"
pageText: "Professional developers employ the discipline of Test Driven Development...."
footTitle: "[COHN09] pp.311-312"
)

我该怎么做

为什么不只使用

LibraryContentsModel(
...
bookList: booklist, // already fetched
),

最新更新