gpt4 book ai didi

database - Flutter - 将 SQL 数据发送到 ListView

转载 作者:IT王子 更新时间:2023-10-29 06:59:12 29 4
gpt4 key购买 nike

使用 flutter 包 sqflite我已经设法将数据从新闻源保存到数据库中,例如 titledescription 等等。

请花时间查看创建的这个应用database file遵循我的结构。

这就是我创建数据库的方式,以及我如何将数据从在线源保存到数据库中的方式。

var title = articles[index].title;
var description = articles[index].description;
var url = articles[index].url;
var urlToImage = articles[index].urlToImage;
var publishedAt = articles[index].publishedAt;

var databasesPath = await getDatabasesPath();
String path = join(databasesPath, 'saved_articles.db');

Database database = await openDatabase(path, version: 1,
onCreate: (Database db, int version) async {
// When creating the db, create the table
await db.execute(
'CREATE TABLE Article (id INTEGER PRIMARY KEY, title TEXT, description TEXT, url TEXT, urltoimage TEXT, publishedat TEXT)');
});

print(database);

print(databasesPath);

// Insert some records in a transaction
await database.transaction((txn) async {
int id1 = await txn.rawInsert(
'INSERT INTO Article(title, description, url, urltoimage, publishedat) VALUES("$title", "$description", "$url", "$urlToImage", "$publishedAt")'
);
debugPrint('inserted1: $id1');

});

我正在寻找一种方法来将这些数据直接发送到有序的 ListView。这是收藏夹页面的最终目标,可将文章保存到用户设备以供离线查看。

这就是我检索特定数据以转换为底部 title 列表的方式。

var databasesPath = await getDatabasesPath();
String path = join(databasesPath, 'saved_articles.db');

Database database = await openDatabase(path, version: 1,
onCreate: (Database db, int version) async {
// When creating the db, create the table
await db.execute(
'CREATE TABLE Article (id INTEGER PRIMARY KEY, title TEXT, description TEXT, url TEXT, urltoimage TEXT, publishedat TEXT)');
});

List<Map> title = await database.rawQuery('SELECT title FROM Article');
List<Map> description = await database.rawQuery('SELECT description FROM Article');
List<Map> url = await database.rawQuery('SELECT url FROM Article');

这就是我用来将特定查询发送到列表的方法,但我不确定从这里开始创建一个可行的结构以将此数据发送到所需的 ListView

List<Map> title = await database.rawQuery('SELECT title FROM Article');

谢谢

最佳答案

我不完全确定我是否理解您的问题,所以如果我遗漏了什么,请跟进。

我正在寻找一种将此数据直接发送到有序 ListView 的方法。

由此,我理解了您的问题,因为您只是想知道 Flutter 下一步该做什么?

如果是这样,我建议您查看:https://pub.dartlang.org/packages/jaguar_serializer

那这就是我要做的

  1. 按照 jaguar 的自述文件创建一个 Article 模型,或者创建一个手动函数将 map 转换为 Article 的实例。

    import 'package:jaguar_serializer/jaguar_serializer.dart';
    part 'article.jser.dart';
    class Article {
    string title;
    string description;
    string url;
    etc...
    }
    等等。

  2. 运行cli工具

  3. 创建查询获取所有文章的列表,例如(在sql中排序更快)

    'SELECT title, description, url FROM Article ORDER BY title'

  4. 将其映射到文章列表(再次查看 jaguar 自述文件以创建 JsonRepo。

    List<Article> articles = jsonRepo.decodeList<Complete>(response.body);

  5. 然后你就可以在 flutter 中将你的文章传递给 ListView。

    ListView.builder(
    padding: EdgeInsets.all(8.0),
    itemExtent: 20.0,
    itemBuilder: (BuildContext context, int index) {
    return Text('entry ${articles[index].title}');
    },
    )

关于database - Flutter - 将 SQL 数据发送到 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53900261/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com