Flutter - отправка данных SQL в ListView - PullRequest
0 голосов
/ 23 декабря 2018

Использование пакета флаттера sqflite Мне удалось сохранить данные из источника новостей в базе данных, такой как title, description и т. Д.

Пожалуйста, возьмитевремя взглянуть на это приложение, созданное файл базы данных , который следует моей структуре.

Это способ создания базы данных и сохранения в ней данных из онлайн-источника.

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');

Спасибо

1 Ответ

0 голосов
/ 23 декабря 2018

Я не совсем уверен, что понимаю ваш вопрос или проблему, поэтому, пожалуйста, проследите, если я что-то упустил.

Я ищу способ, чтобы отправить эти данные напрямуюк заказанному ListView.

Исходя из этого, я понимаю ваш вопрос, поскольку вы просто задаетесь вопросом, что делать дальше во флаттере?

Если это так, я бы порекомендовал взглянуть на:https://pub.dartlang.org/packages/jaguar_serializer

Тогда вот что я бы сделал

  1. Создайте модель Article, следуя readme jaguar ИЛИ просто создайте ручную функцию для преобразования карты в экземпляр 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. Сопоставьте это со списком статей (снова посмотрите на readme-файл jaguar для creatont aJsonRepo.

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

  5. Затем вы можете просто передать свои статьи в ListView в трепетании.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...