Jop Middelkamp

一个可以帮助您创建“更智能”的枚举的包,这些枚举可以扩展一些领域逻辑。

用法

final bestFramework = Framework.flutter;

print('${bestFramework == Framework.flutter}'); // Prints 'true'
print('${bestFramework == Framework.maui}'); // Prints 'false'

class Framework extends SmartEnum<Framework> {
  static const Framework flutter = Framework._(
    1,
    name: 'Flutter',
    isCrossPlatform: true,
    score: 10,
  );
  static const Framework maui = Framework._(
    2,
    name: 'MAUI',
    isCrossPlatform: true,
    score: 8,
  );
  static const Framework reactNative = Framework._(
    4,
    name: 'React Native',
    isCrossPlatform: true,
    score: 9,
  );

  const Framework._(
    int value, {
    required this.name,
    required this.isCrossPlatform,
    required this.score,
  }) : super(value);

  final String name;
  final bool isCrossPlatform;
  final int score;

  static List<Framework> get crossPlatformFrameworks => const [
        Framework.flutter,
        Framework.maui,
        Framework.reactNative,
      ].where((f) => f.isCrossPlatform).toList();
}

注意

Steve Smith 的智能枚举 .NET 的启发。

GitHub

查看 Github