Хотите спросить еще раз ... попробуйте реализовать API данных, хранящийся в локальной базе данных ... форма JSON API Объект, в котором есть массив JSON ... произошла ошибка при загрузке данных из API в локальную базу данных ... грубо говоря, это ошибка из-за "неправильной модели или чего-то
Служба API
class MealApiProvider {
Future<List<Categories>> getAllMeal() async {
var url = "https://www.themealdb.com/api/json/v1/1/categories.php";
Response response = await Dio().get(url);
print("Hasil Respon ${response.data}");
return (response.data as List).map((employee) {
print('Inserting $employee');
DBProvider.db.insertMeals(Categories.fromJson(employee));
}).toList();
}
}
Модель
class DataMeal {
final List<Categories> categories;
DataMeal({this.categories});
@override
String toString() {
return 'DataMeal{categories: $categories}';
}
factory DataMeal.fromJson(Map<String, dynamic> json) {
return DataMeal(
categories: List<Categories>.from(
json["categories"].map(
(categories) {
return Categories.fromJson(categories);
},
),
),
);
}
Map<String, dynamic> toJson() => {
"categories": List<dynamic>.from(
categories.map(
(x) => x.toJson(),
),
),
};
}
Локальная БД
initDB() async {
Directory documentsDirectory = await getApplicationDocumentsDirectory();
final String path = join(documentsDirectory.path, '$nameDatabase');
print('insert database $path');
return await openDatabase(path, version: 1, onOpen: (db) {},
onCreate: (Database db, int version) async {
await db.execute('CREATE TABLE $nameTable('
'idCategory,'
'strCategory TEXT,'
'strCategoryThumb TEXT,'
'strCategoryDescription TEXT'
')');
});
}
insertMeals(DataMeal newMeal) async {
await deleteAllMeal();
final Database db = await database;
final res = await db.insert("$nameTable", newMeal.toJson());
print("inserting data $res");
return res;
}
Ошибка
return (response.data как список) .map ((сотрудник)