Flutter枚举字符串值转换插件enum_string_value_lib的使用

Flutter枚举字符串值转换插件enum_string_value_lib的使用

使用说明

(参考完整的示例项目)

1. 配置 build.yaml

在项目的根目录下添加 build.yaml 文件。

targets:
  $default:
    builders:
      enum_string_value_generator|enum_string_value:
        generate_for:
          - lib/**/*.dart

2. 添加依赖

pubspec.yaml 文件中添加以下依赖:

dependencies:
  enum_string_value_lib: ^1.0.0+1

dev_dependencies:
  build_runner: ^1.7.2
  enum_string_value_generator: ^0.0.2+1

3. 定义枚举并添加注解

为枚举值添加 [@Value](/user/Value) 注解,并在文件顶部添加 part 指令以引用生成的文件。

// os.dart
import 'package:enum_string_value_lib/enum_string_value_lib.dart';
part "os.value.g.dart";

enum OsKind {
  [@Value](/user/Value)("Android")
  android,
  [@Value](/user/Value)("iOS")
  ios,
}

4. 运行构建工具

对于纯 Dart 项目:

$ pub run build_runner build

对于 Flutter 项目:

$ flutter packages pub run build_runner build

完整示例代码

以下是一个完整的示例代码,展示如何使用 enum_string_value_lib 插件将枚举值转换为字符串。

示例代码

// example/lib/example.dart
import 'package:enum_string_value_lib/enum_string_value_lib.dart';

part 'example.value.g.dart';

enum JapanesePrefecture {
  // 北海道・東北
  [@Value](/user/Value)("北海道")
  hokkaido,
  [@Value](/user/Value)("青森")
  aomori,
  [@Value](/user/Value)("岩手")
  iwate,
  [@Value](/user/Value)("宮城")
  miyagi,
  [@Value](/user/Value)("秋田")
  akita,
  [@Value](/user/Value)("山形")
  yamagata,
  [@Value](/user/Value)("福島")
  fukushima,

  /// 関東
  [@Value](/user/Value)("茨城")
  ibaraki,
  [@Value](/user/Value)("栃木")
  tochigi,
  [@Value](/user/Value)("群馬")
  gunma,
  [@Value](/user/Value)("埼玉")
  saitama,
  [@Value](/user/Value)("千葉")
  chiba,
  [@Value](/user/Value)("東京")
  tokyo,
  [@Value](/user/Value)("神奈川")
  kanagawa,

  /// 北陸
  [@Value](/user/Value)("新潟")
  nigata,
  [@Value](/user/Value)("富山")
  toyama,
  [@Value](/user/Value)("石川")
  ishikawa,
  [@Value](/user/Value)("福井")
  fukui,

  /// 甲信越
  [@Value](/user/Value)("山梨")
  yamanashi,
  [@Value](/user/Value)("長野")
  nagano,

  /// 東海
  [@Value](/user/Value)("岐阜")
  gifu,
  [@Value](/user/Value)("静岡")
  shizuoka,
  [@Value](/user/Value)("愛知")
  aichi,

  /// 近畿
  [@Value](/user/Value)("三重")
  mie,
  [@Value](/user/Value)("滋賀")
  shiga,
  [@Value](/user/Value)("京都")
  kyoto,
  [@Value](/user/Value)("大阪")
  osaka,
  [@Value](/user/Value)("兵庫")
  hyogo,
  [@Value](/user/Value)("奈良")
  nara,
  [@Value](/user/Value)("和歌山")
  wakayama,

  /// 中国
  [@Value](/user/Value)("鳥取")
  tottori,
  [@Value](/user/Value)("島根")
  shimane,
  [@Value](/user/Value)("岡山")
  okayama,
  [@Value](/user/Value)("広島")
  hiroshima,
  [@Value](/user/Value)("山口")
  yamaguchi,

  /// 四国
  [@Value](/user/Value)("徳島")
  tokushima,
  [@Value](/user/Value)("香川")
  kagawa,
  [@Value](/user/Value)("愛媛")
  ehime,
  [@Value](/user/Value)("高知")
  kochi,

  /// 九州・沖縄
  [@Value](/user/Value)("福岡")
  fukuoka,
  [@Value](/user/Value)("佐賀")
  saga,
  [@Value](/user/Value)("長崎")
  nagasaki,
  [@Value](/user/Value)("熊本")
  kumamoto,
  [@Value](/user/Value)("大分")
  oita,
  [@Value](/user/Value)("宮崎")
  miyazaki,
  [@Value](/user/Value)("鹿児島")
  kagoshima,
  [@Value](/user/Value)("沖縄")
  okinawa,
}

更多关于Flutter枚举字符串值转换插件enum_string_value_lib的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter枚举字符串值转换插件enum_string_value_lib的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


enum_string_value_lib 是一个用于在 Flutter 中方便地进行枚举和字符串之间转换的插件。它允许你为枚举值定义自定义的字符串表示,并在需要时进行转换。

安装

首先,你需要在 pubspec.yaml 文件中添加依赖项:

dependencies:
  enum_string_value_lib: ^1.0.0

然后运行 flutter pub get 来安装依赖。

使用步骤

  1. 定义枚举并添加注解

    你需要在枚举值上使用 @StringValue 注解来指定每个枚举值的字符串表示。

    import 'package:enum_string_value_lib/enum_string_value_lib.dart';
    
    enum Status {
      @StringValue('Pending')
      pending,
      @StringValue('Approved')
      approved,
      @StringValue('Rejected')
      rejected,
    }
    
  2. 使用 EnumStringValue 进行转换

    你可以使用 EnumStringValue 类的静态方法来将枚举值转换为字符串,或者将字符串转换为枚举值。

    import 'package:enum_string_value_lib/enum_string_value_lib.dart';
    
    void main() {
      // 枚举转字符串
      String pendingStatus = EnumStringValue.enumToString(Status.pending);
      print(pendingStatus); // 输出: Pending
    
      // 字符串转枚举
      Status status = EnumStringValue.stringToEnum(Status.values, 'Approved');
      print(status); // 输出: Status.approved
    }
    

高级用法

你可以通过扩展 EnumStringValue 类来实现更复杂的转换逻辑,或者为不同的枚举类型提供自定义的转换方法。

extension StatusExtension on Status {
  String get value => EnumStringValue.enumToString(this);

  static Status fromString(String value) {
    return EnumStringValue.stringToEnum(Status.values, value);
  }
}

void main() {
  // 使用扩展方法
  String pendingStatus = Status.pending.value;
  print(pendingStatus); // 输出: Pending

  Status status = StatusExtension.fromString('Rejected');
  print(status); // 输出: Status.rejected
}
回到顶部