Dart 泛型类显示方法未为类型“Type”定义

问题描述 投票:0回答:1

我在抽象类类型 T 上添加了 fromjson 方法,但 dart 显示方法未定义 这是我的代码 我是 dart 和 flutter 的初学者,所以我尝试了 T().fromjson(data) 但不起作用

abstract class JsonConvertable<T> {
  T fromJson(Map<String, dynamic> json);
}

class ProductByRemarksController<T extends JsonConvertable<T>>
    extends GetxController {

  Future<bool> loadProduct(RemarksType remarks) async {
    _isloading = true;
    update();
    try {
      final remarksUrl = ApiUrl.productByRemarks(remarks.getName);
      final response = await NetworkCaller().getRequiest(url: remarksUrl);
      for (final data in response.responseData['data']) {
        // this lines show an error
        /*
      The method 'fromJson' isn't defined for the type 'Type'.
        Try correcting the name to the name of an existing method, or defining a method named 'fromJson'.
  */
        T product = T.fromJson(data);
      }
      return true;
    } catch (e) {
      return false;
    }
  }
}
flutter dart oop generics
1个回答
1
投票

您完全得到了您想要做的事情,并且错误清楚地表明了这一点 - 您不能这样做。我们谈论的是什么编程语言并不重要。 T 是一个类型,而不是该类型的实例:

T product = T.fromJson(data);

类型只是描述,你不能在类型上调用方法。类型的实例是根据此描述创建的对象。您应该在类型实例上调用方法。

有关 dart 中泛型的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.