使用 Sqlite 在 Flutter 中收藏项目

HDi*_*ond 6 sqlite dart flutter

我希望能够在已经填充的本地 sqlite 数据库中收藏/标记项目,以显示在显示收藏项目列表的“收藏夹页面”上。

在这个 sqlite 数据库中,我有一个流派表和一个与特定流派相关的书籍表。我没有使用模型“书籍”类在列表中显示书籍信息。我使用 rawQuery 将书籍信息的 ROW 放入 List 中,以在 bookView 页面中显示该书籍信息。像这样..

Future getDescriptionData() async {
    Directory documentsDirectory = await getApplicationDocumentsDirectory();
    String path = join(documentsDirectory.path, "asset_sample_sqlite.db");
    ByteData data =
        await rootBundle.load(join("assets", "sample_sqlite.db"));
    List<int> bytes =
        data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
    await new File(path).writeAsBytes(bytes);
    Database db = await openDatabase(path);
    await db
        .rawQuery('SELECT * FROM books WHERE id = "${widget.id}"') // id passed on from previous page where it shows a list of books
        .then((results) {
      setState(() {
        loading = false;
        initialized = true;
        bookDescription = results;
      });
Run Code Online (Sandbox Code Playgroud)

然后我像这样显示信息..

body: Padding(
              padding: const EdgeInsets.all(8.0),
              child: new Center(
                child: !loading
                    ? new ListView.builder(
                        itemCount: bookDescription.length,
                        itemBuilder: (BuildContext context, int index) {
                          return new Card(
                              elevation: 2.0,
                              child: new ListTile(
                                title: new Text(${bookDescription[index]['title']}",
                                  textAlign: TextAlign.center,
                                ),
                                subtitle: new Text(
                                  "${bookDescription[index]['summary']}",
                                  ),
                                ),
                              ),
                            ),
                          );
                        },
                      )
Run Code Online (Sandbox Code Playgroud)

在此卡片中包含 iconButton 的最佳方法是什么,然后可以选择收藏这本“书”以将其添加到在不同的最喜欢的书籍列表页面中收藏的书籍的候选列表中?

小智 0

您可以创建一个Favorites表,仅保存所青睐的表id的值。您还应该在(或类似的方法)books中读取该表,以便您在内存中拥有一个喜爱的书籍 ID 列表,在调用该函数时可用。在添加一个带有代表填充或未填充星号的参数(取决于是否在首选列表中)并将其包装在其中的位置中,您可以从内存列表SQL 表中添加或删除该书,然后调用以使用新的收藏夹信息重建列表。getDescriptionDatagetFavoriteDatabuildCardleadingIconbookDescription[index]['id']GestureDetectoronTapidsetState