簡體   English   中英

如何在變量中使用 Class?

[英]How to use Class in variable?

我想將獲取的數據轉換如下,但出現錯誤並關閉模擬器? 我能做些什么?

Map<String, dynamic> responseClassMap = {
'$ResponseCompany': ResponseCompany,//ResponseCompany is class
'$ResponseCompanyDetail': ResponseCompanyDetail, //ResponseCompanyDetail is class
};
for (var item in responseClassMap.entries) {
  if (className == item.key) {
    result = responseData.map((data) => item.value.fromJson(data)).toList();
  }
}

這是 class ResponseCompany.dart

@JsonSerializable()
class ResponseCompany {
final num sales, ...;
...
factory ResponseCompany.fromJson(Map<String, dynamic> json) => _$ResponseCompanyFromJson(json);
...

這是 ResponseCompany.g.dart

ResponseCompany _$ResponseCompanyFromJson(Map<String, dynamic> json) {
  return ResponseCompany(
  );
  ...
}

恕我直言item.value.fromJson將不起作用。 由於 fromJson 是工廠構造函數,並且在 dart 規則中,不能為存儲在變量中的類型調用工廠構造函數。 (實際上,問題是隱藏的,因為您創建了Map<string, dynamic>和 dart 允許在編譯時dynamic調用所有內容。)

對於您的具體情況,您可以這樣做

Map<String, dynamic> map = {
'$ResponseCompany': (d)=>ResponseCompany.fromJson(d),//ResponseCompany is class
'$ResponseCompanyDetail': (d)=>ResponseCompanyDetail.fromJson(d), //ResponseCompanyDetail is class
};
for (var item in map.entries) {
  if (className == item.key) {
    result = responseData.map((data) => item.value(data)).toList();
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM