gpt4 book ai didi

api - 从API刷新FetchData并使用sqflite保存本地

转载 作者:行者123 更新时间:2023-12-03 03:37:45 25 4
gpt4 key购买 nike

我有问题,我从API提取数据并保存到本地数据库。
因此,作为Flutter的新手,我想找到一种将数据保存在数据库中以供离线支持的方法。

这个问题错误

Unhandled Exception: type 'String' is not a subtype of type 'List<dynamic>' in type cast

我的模型数据是这样的
List<Employee> employeeFromJson(String str) =>
List<Employee>.from(json.decode(str).map((x) => Employee.fromJson(x)));

String employeeToJson(List<Employee> data) =>
json.encode(List<dynamic>.from(data.map((x) => x.toJson())));

class Employee {
int id;
String id_surat;
String nama;
String nomor;
String arti;

Employee({
this.id,
this.id_surat,
this.nama,
this.nomor,
this.arti,
});

factory Employee.fromJson(Map<String, dynamic> json) => Employee(
id_surat: json["id_surat"],
nama: json["nama"],
nomor: json["nomor"],
arti: json["arti"],
);

Map<String, dynamic> toJson() => {

"id_surat": id_surat,
"nama": nama,
"nomor": nomor,
"arti": arti,
};
}

这是从网络查询的JSON解析方法:
class EmployeeApiProvider {
Future<List<Employee>> getAllEmployees() async {
var url = "EXAMPLE";
Response response = await Dio().get(url);
print(response.data);

return (response.data as List).map((employee) {
print('Inserting $employee');
DBProvider.db.createEmployee(Employee.fromJson(employee));
}).toList();
}
}

还有来自API Server的响应,就像这样。
[
{
id_surat: "1",
nama: "Al Fatihah",
nomor: "1",
arti: "Pembukaan"
},
{
id_surat: "2",
nama: "Al Baqarah",
nomor: "2",
arti: "Sapi Betina"
},
{
id_surat: "3",
nama: "Ali Imran",
nomor: "3",
arti: "Keluarga Imran"
},
{
id_surat: "4",
nama: "An Nisaa",
nomor: "4",
arti: "Wanita"
},
]

最佳答案

我认为您应该替换:

 String employeeToJson(List<Employee> data) =>
json.encode(List<dynamic>.from(data.map((x) => x.toJson())));

与:
String employeeToJson(List<Employee> data) => json.encode(data); 

您已经传递了要编码的 List<Employee>

您不需要 List<dynamic>.from和创建 List<dynamic>的内部函数。根据文档, List<dynamic>不可直接编码。

https://api.flutter.dev/flutter/dart-convert/jsonEncode.html

关于api - 从API刷新FetchData并使用sqflite保存本地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59701996/

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