如何在Flutter上的SQLite中存储对象数据列表? API附带的Json数据。
hashlib.blake2b(b"asdfasdf", digest_size=16).hexdigest()
答案 0 :(得分:0)
答案 1 :(得分:0)
在使用 SQLite 存储对象之前,您需要序列化对象列表。
首先,您不能将Map
或List
直接存储在数据库中,您需要先将Map
或List
转换为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,创建一个包含列 id
和 name
的表并插入。
await db.insert('images', {'id': 10, 'name': 'img1'});
await db.insert('images', {'id': 11, 'name': 'img2'});