使用Sqlite在Flutter中收藏项目

时间:2018-08-08 18:25:30

标签: sqlite dart flutter

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

在这个sqlite数据库中,我有一个类型表和一个与特定类型有关的书表。我没有使用模型“书”类在列表中显示书信息。我已经使用rawQuery将一排图书信息放到一个列表中,以在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;
      });

然后我像这样显示信息。

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']}",
                                  ),
                                ),
                              ),
                            ),
                          );
                        },
                      )

在此卡中包括一个iconButton,然后可以选择“收藏”此“书”以将其添加到在其他“收藏夹书”页面中收藏的书的短清单中的最佳方法是什么?

0 个答案:

没有答案