-1

在此处输入图像描述

我正在获取类型问题我没有做错什么,我正在尝试将数据存储在 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);} 
}

感谢您的提前帮助

4

3 回答 3

0

终于成功了-感谢所有花时间在这个问题上的人

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);} 
 }
于 2021-03-20T09:39:02.953 回答
0

首先,您尝试使用列表来转换原始 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']));

于 2021-03-20T05:36:27.197 回答
0

更改以下行:

 Map<dynamic, dynamic> decodedResponse = json.decode(response);

对此:

 Map<String, dynamic> decodedResponse = json.decode(response);
于 2021-03-20T08:18:33.857 回答