Generics 如何在dart中创建具有泛型返回类型的方法

Generics 如何在dart中创建具有泛型返回类型的方法,generics,dart,typedef,Generics,Dart,Typedef,我有一个这样定义的枚举 enum PropertyType { apartment, villa, plot } enum PossesionType { readyToMove, underConstruction } 我正在尝试创建一个泛型方法,当给定一个字符串作为输入时,该方法将返回正确的枚举 class Property<T> { T getGenericType(String text) { switch (text) { case 'Ready

我有一个这样定义的枚举

enum PropertyType { apartment, villa, plot }
enum PossesionType { readyToMove, underConstruction }
我正在尝试创建一个泛型方法,当给定一个字符串作为输入时,该方法将返回正确的枚举


class Property<T> {
 T getGenericType(String text) {
    switch (text) {
      case 'Ready to move':
        return PossesionType.readyToMove;
        break;
      case 'Apartment':
        return PropertyType.apartment;
        break;
      ....
      ....
      ....  
      default:
        return PossesionType.readyToMove;
 }   
}


我是泛型新手,所以有人能帮我理解如何实现这一点。

您需要编写两个不同的函数

调用泛型函数时,如
T parseProperty(String text){…}
,您需要知道在编译时返回哪种类型。否则,您必须将
动态
作为类型参数传递

正如您也注意到的,简单地抽象返回类型会使函数难以实现。您必须将
作为T
放在每个返回表达式上,因为无法发明未知类型的对象


总而言之,如果您在编译时知道类型,最好使用两个函数中的一个,如果您不知道类型,最好使用一个函数返回
Object

您能提供更多的上下文吗?奇怪的是,您需要将
字符串
转换为枚举。这似乎也不适合使用泛型。哦,好吧,实际上我在UI中有一组单选按钮,我从后端获得一个字符串值,需要根据从后端返回的字符串显示要选择的单选按钮之一。这对泛型没有意义。对于静态类型,调用方需要提前知道预期的返回类型。如果您想返回多个类型,则必须返回
动态
对象
,并要求调用者执行运行时检查以确定返回的内容。此外,这些选项听起来不适合一组单选按钮,因为它们并非相互排斥。
PropertyType
possionType
值似乎应该是独立的,因此使用两组单选按钮(或一组单选按钮和一个复选框)更合适。
  PropertyType getSelectedProperty(String text) {
    switch (text) {
      case 'Apartment':
        return PropertyType.apartment;
        break;
      case 'Villa':
        return PropertyType.villa;
        break;
      case 'Plot':
        return PropertyType.plot;
        break;
      default:
        return PropertyType.apartment;
    }
  }

  PossesionType getSelectedPossession(String text) {
    switch (text) {
      case 'Ready to move':
        return PossesionType.readyToMove;
        break;
      case 'Under Construction':
        return PossesionType.underConstruction;
        break;
      default:
        return PossesionType.readyToMove;
    }
  }