相关疑难解决方法(0)

如何用Dart构建枚举?

Dart语言没有枚举(但??).构建枚举的正确或惯用方法是什么,至少在语言特征到来之前?

dart

44
推荐指数
4
解决办法
2万
查看次数

来自String的枚举

我有一个Enum和一个函数来创建它,String因为我找不到内置的方法来做它

enum Visibility{VISIBLE,COLLAPSED,HIDDEN}

Visibility visibilityFromString(String value){
  return Visibility.values.firstWhere((e)=>
      e.toString().split('.')[1].toUpperCase()==value.toUpperCase());
}

//used as
Visibility x = visibilityFromString('COLLAPSED');
Run Code Online (Sandbox Code Playgroud)

但似乎我必须为每个Enum重写此函数,有没有办法在Enum类型作为参数的情况下编写相同的函数?我试图但我发现我不能投于Enum.

//is something with the following signiture actually possible?
     dynamic enumFromString(Type enumType,String value){

     }
Run Code Online (Sandbox Code Playgroud)

dart

24
推荐指数
13
解决办法
2万
查看次数

Dart:枚举上的扩展方法不起作用“该方法未为类定义”

基于这个问题,我在 dart 中创建了一个带有扩展方法的枚举:

enum TagVisibility {
  public,
  shared,
  private,
}

extension on TagVisibility {
  String get german {
    switch(this){
      case TagVisibility.public: return "Für alle sichtbar";
      case TagVisibility.shared: return "Für alle mit demselben Tag sichtbar";
      case TagVisibility.private: return "Nur für mich sichtbar";
      default: throw Exception("enum has more cases");
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是Error: The method 'german' isn't defined for the class 'TagVisibility'.当我尝试调用此扩展方法时出现错误:

import 'package:prototype/models/visibility.dart';
...
 DropdownButton<TagVisibility>(
          hint: Text("Wähle die Sichtbarkeit für diesen Tag"),
          value: _visibility ?? _visibilityDefault,
          onChanged: …
Run Code Online (Sandbox Code Playgroud)

extension-methods enums dart

2
推荐指数
2
解决办法
1802
查看次数

标签 统计

dart ×3

enums ×1

extension-methods ×1