如何在Flutter上的sqlite中存储对象数据列表?

时间:2019-03-19 02:07:40

标签: dart flutter

如何在Flutter上的SQLite中存储对象数据列表? API附带的Json数据。

hashlib.blake2b(b"asdfasdf", digest_size=16).hexdigest()

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

在使用 SQLite 存储对象之前,您需要序列化对象列表。

首先,您不能将MapList直接存储在数据库中,您需要先将MapList转换为JSON String,查看https://dart.dev/guides/json 了解如何在 Dart 中使用 JSON

import 'dart:convert';

final data = {
     "images": [
        {
          "id": 10,
          "name": "img1"
        },
        {
          "id": 11,
          "name": "img2"
        }
      ],
};

final String dataAsJson = json.encode(data);

其次,使用 Flutter sqflite package 创建一个 SQLite 数据库,并创建一个包含以下列的表: id 自动递增 data 将从 API 获取的数据存储为 JSON dataAsJson

import 'package:sqflite/sqflite.dart';

# 1. open the database first. check the documentation of `sqflite` package

# 2. insert data to the table
await db.insert(
    'images', # the name of the table
    {'data': dataAsJson}, # `data` is the column's name
);


最后,使用await db.query(..)

从数据库中获取数据
final List<Map> maps = await db.query('images', columns: ['id', 'data']);

# now let's get the first item in the table then convert it back as it was fetched from the API.

final dataFromJsonToMap = json.decode(maps[0]);

如果您只想存储 API 中的 images,则不需要转换为 JSON,创建一个包含列 idname 的表并插入。

await db.insert('images', {'id': 10, 'name': 'img1'});
await db.insert('images', {'id': 11, 'name': 'img2'});