тип '_InternalLinkedHashMap <String, dynamic>' не является подтипом типа 'RxList <dynamic>'
У меня проблема с типом. Я не понимаю, что сделал неправильно, я пытаюсь сохранить данные в классе контроллера GetX и сделать их наблюдаемыми.
мой код: -
import 'package:get/get.dart';
import '../Services/HttpService.dart';
import 'dart:convert';
class SelectedCardController extends GetxController{
var selectedProductList = List().obs;
@override
void onInit() async{
super.onInit();
getProductDetail();
}
selectedProduct() async {
try {
HttpService httpService = HttpService();
var response = await httpService.get('business', 'product', 'get', '6035de62bf7db17c5dfd9977');
Map<dynamic, dynamic> decodedResponse = json.decode(response);
print('res ----------------- $decodedResponse');
print(selectedProductList.runtimeType);
if (decodedResponse['code'] == 200) selectedProductList = decodedResponse['content'];
print("result ------ $selectedProductList");
}
catch (e) {print(e);}
}
Заранее спасибо за помощь
3 ответа
наконец-то это сработало - спасибо всем, кто потратил время на эту проблему
import 'package:get/get.dart';
import '../Services/HttpService.dart';
import 'dart:convert';
class SelectedCardController extends GetxController{
var selectedProductList = Map().obs;
@override
void onInit() async{
super.onInit();
getProductDetail();
}
getProductDetail() async {
try {
HttpService httpService = HttpService();
var response = await httpService.get('business', 'product','get',
'6035de62bf7db17c5dfd9977');
Map<String, dynamic> decodedResponse = json.decode(response);
if (decodedResponse['code'] == 200) selectedProductList.value =
decodedResponse['content'] ;
print("sdbcdbck--------------$selectedProductList");
}
catch (e) {print(e);}
}
Во-первых, вы пытаетесь использовать список для преобразования необработанных данных JSON, но вместо этого вам следует использовать карту. Я советую вам сначала создать модель, чтобы преобразовать данные JSON в экземпляр этой модели. Ознакомьтесь с документами Flutter для справки: https://flutter.dev/docs/cookbook/networking/background-parsing#create-a-photo-class
Есть очень хороший инструмент, который помогает автоматизировать создание модели: просто вставьте данные JSON, и он сгенерирует для вас правильную модель: https://javiercbk.github.io/json_to_dart/
Однако, если вы все еще учитесь, я бы порекомендовал вам попробовать создать модель вручную, это хорошо для практики.
Как только вы это сделаете, вы можете просто заменить
var selectedProductList = decodedResponse['content'];
с
Content selectedProductList = Content.fromJson(decodedResponse['content']);
Если вы все еще получаете подобное сообщение об ошибке, вы также можете попробовать
Content selectedProductList = Content.fromJson(Map.from(decodedResponse['content']));
измените следующую строку:
Map<dynamic, dynamic> decodedResponse = json.decode(response);
к этому:
Map<String, dynamic> decodedResponse = json.decode(response);