Flutter枚举转字符串校验插件dart_enum_to_string_check的使用

Flutter枚举转字符串校验插件dart_enum_to_string_check的使用

注意事项

由于最新版本的Dart支持name参数,因此建议在旧版Dart中使用此插件。目前仓库不在存档中,因为插件存在一些可以修复的错误。在未来进行全面检查并理解所有兼容性问题后,仓库可能会被存档。

dart_enum_to_string_check

GitHubActions Coverage pub.dev

关于

这是一个用于Dart分析器来检查enum.toString()用法的插件。

动机

默认情况下,Enum.toString()方法将枚举常量表示为类名加常量名(例如:Colors.green而不是green)。在某些情况下,这种转换对于程序逻辑来说并不合适(如解析值到数据库或JSON中),并且可能会导致一些问题(当从数据库获取没有类名的字符串时,"green" == Colors.green.toString()不符合预期)。该插件有助于防止上述问题。

如何使用

从Dart分析器服务器

pubspec.yml中添加插件作为开发依赖:

dev_dependencies:
  dart_enum_to_string_check: ^0.8.3

analysis_options.yaml中添加插件名称:

analyzer:
  plugins:
    - dart_enum_to_string_check

然后重启Dart分析器服务器。

从命令行

使用pub

要从pub获取dart_enum_to_string_check,请在shell中运行以下命令:

Dart

pub global activate dart_enum_to_string_check

Flutter

flutter pub global activate dart_enum_to_string_check

然后从项目文件夹运行:

Dart

dart_enum_to_string_check

Flutter

flutter pub global run dart_enum_to_string_check

不使用pub

下载插件到你的机器,并提供bin/位置到PATH。然后从项目文件夹运行:

dart dart_enum_to_string_check.dart

示例代码

下面是一个完整的示例代码,演示如何使用dart_enum_to_string_check插件。

首先,创建一个pubspec.yml文件:

name: enum_example
description: A sample Flutter project demonstrating the use of dart_enum_to_string_check.

dependencies:
  flutter:
    sdk: flutter

dev_dependencies:
  dart_enum_to_string_check: ^0.8.3

接下来,创建一个analysis_options.yaml文件:

analyzer:
  plugins:
    - dart_enum_to_string_check

然后,在项目中定义一个枚举类型:

// lib/enums.dart
enum Color {
  red,
  green,
  blue
}

接下来,在项目中使用该枚举类型,并确保使用插件进行检查:

// lib/main.dart
import 'package:flutter/material.dart';
import 'enums.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Enum Example')),
        body: Center(
          child: Text(Color.red.toString()),
        ),
      ),
    );
  }
}

最后,运行插件检查:

Dart

dart_enum_to_string_check

Flutter

flutter pub global run dart_enum_to_string_check

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

1 回复

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


在Flutter中,dart_enum_to_string 是一个常用的库,用于将枚举值转换为字符串,或者将字符串转换回枚举值。而 dart_enum_to_string_check 可能是一个类似的库,或者是一个用于校验枚举值是否存在的插件。不过,目前并没有广泛使用的库叫做 dart_enum_to_string_check,可能是你提到的库有误,或者是一个自定义的库。

如果你想要实现枚举与字符串之间的转换以及校验,可以使用 dart_enum_to_string 这个库,或者手动实现相关功能。下面我将介绍如何使用 dart_enum_to_string 库,并手动实现类似的校验功能。

使用 dart_enum_to_string

  1. 添加依赖

    首先,在 pubspec.yaml 文件中添加 dart_enum_to_string 依赖:

    dependencies:
      dart_enum_to_string: ^2.0.0
    
  2. 导入库

    在你的 Dart 文件中导入库:

    import 'package:dart_enum_to_string/dart_enum_to_string.dart';
    
  3. 定义枚举

    定义一个枚举类型:

    enum Status {
      active,
      inactive,
      pending,
    }
    
  4. 枚举转字符串

    使用 EnumToString.convertToString 将枚举值转换为字符串:

    String statusStr = EnumToString.convertToString(Status.active);
    print(statusStr); // 输出: "active"
    
  5. 字符串转枚举

    使用 EnumToString.fromString 将字符串转换回枚举值:

    Status status = EnumToString.fromString(Status.values, "active");
    print(status); // 输出: Status.active
    
  6. 校验字符串是否为有效的枚举值

    你可以通过检查 EnumToString.fromString 的返回值是否为 null 来校验字符串是否是有效的枚举值:

    String input = "active";
    Status? status = EnumToString.fromString(Status.values, input);
    if (status != null) {
      print("Valid enum value: $status");
    } else {
      print("Invalid enum value: $input");
    }
    

手动实现枚举与字符串的转换及校验

如果你不想使用第三方库,也可以手动实现枚举与字符串的转换及校验。

  1. 定义枚举

    enum Status {
      active,
      inactive,
      pending,
    }
    
  2. 枚举转字符串

    String enumToString(Status status) {
      return status.toString().split('.').last;
    }
    
  3. 字符串转枚举

    Status? stringToEnum(String str) {
      for (Status status in Status.values) {
        if (enumToString(status) == str) {
          return status;
        }
      }
      return null;
    }
    
  4. 校验字符串是否为有效的枚举值

    bool isValidEnum(String str) {
      return stringToEnum(str) != null;
    }
    

使用示例

void main() {
  String input = "active";
  
  if (isValidEnum(input)) {
    Status status = stringToEnum(input)!;
    print("Valid enum value: $status");
  } else {
    print("Invalid enum value: $input");
  }
}
回到顶部