У меня есть этот список данных как Нить, я хочу сохранить его в файле JSON и снова вызвать как Нить, чтобы сохранить его в Список, но выдает ошибку из-за типов данных
вот код
import 'package:project/models/Response.dart';
import 'dart:convert';
import 'package:http/http.dart' as http;
final body ='''
[
{
"urlToImage": "assets/images/spelt_noodles.png",
"title": "Biona Organic Spelt Noodles",
"price": 2.99,
"weight": 250,
"id": 1,
"created_at": "2019-07-07 10:44:53",
"updated_at": "2019-07-07 10:44:53"
},
{
"urlToImage": "assets/images/spelt_spaghetti.png",
"title": "Biona Organic Spelt Noodles",
"price": 2.99,
"weight": 250,
"id": 2,
"created_at": "2019-07-07 10:44:53",
"updated_at": "2019-07-07 10:44:53"
},
{
"urlToImage": "assets/images/spelt_noodles.png",
"title": "Biona Organic Spelt Noodles",
"price": 2.99,
"weight": 250,
"id": 3,
"created_at": "2019-07-07 10:44:53",
"updated_at": "2019-07-07 10:44:53"
}
]''';
class ProductsRepository{
List<Product> fetchAllProducts() {
var jsonB = (jsonDecode(body) as List).cast<Map<String, dynamic>>();
var list = jsonB.map<Response1>((e) => Response1.fromJson(e)).toList();
List<Product> items = [];
for (var item in list) {
items.add(new Product(item.urlToImage, item.title, item.price, item.price, item.id));
}
return items;
}
Я старался
var response;
String data;
Future<String> getData() {
response = http.get('https://example.json');
return data = json.decode(utf8.decode(response.bodyBytes));
}
Но выдает ошибку, Итак, как я могу получить файл json по http и преобразовать его в строку, чтобы передать его jsonDecode (тело)?
response.body уже является строкой, вам не нужно ничего делать.
Future<String> getData() async {
response = await http.get('https://example.json');
return response.body;
}
да, но у меня проблема с загрузкой файла json, загрузка занимает несколько секунд, но флаттер не ждет этого, он выполняет следующие строки кода и возвращает Нить как Нулевой
Разница между вашим кодом и моим примером заключается в моем: getData — это асинхронная функция, и я использую await, чтобы дождаться завершения http.get.
Вы можете обновить вопрос с сообщением об ошибке, пожалуйста.