тип '_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);
Другие вопросы по тегам