Flutter规则验证插件zam_rules的使用

Flutter规则验证插件zam_rules的使用

zam_rules 是一个实用库,包含了一组最常用的规则。该库可以帮助开发者在Flutter应用中进行各种规则验证。

包含的内容

小数规则

  • DecimalRangeRule
  • LesserThanDecimalRule
  • GreaterThanDecimalRule
  • LesserThanOrEqualToDecimalRule
  • GreaterThanOrEqualToDecimalRule
  • PositiveDecimalRule

数字规则

  • NumberRangeRule
  • LesserThanNumberRule
  • GreaterThanNumberRule
  • PositiveNumberRule
  • PositiveNumberRangeRule
  • PercentNumberRule
  • EightBitNumberRule
  • ThirtyTwoBitNumberRule

文本规则

  • TextStartsWithRule
  • MatchOnePatternRule
  • EndsWithPatternMatcherRule
  • PatternMatcherRule
  • RegexMatcherRule
  • StartsWithPatternMatcherRule
  • TextStartsWithRule

您可以在这里详细了解所有组件:详细信息

如何使用

以下是一个简单的示例,展示如何使用 TextStartsWithRule 进行文本验证:

import 'package:zam_rules/zam_rules.dart';

void main() {
  final text = 'Sony Xperia';
  final pattern = 'Sony';
  final rule = TextStartsWithRule(text, pattern, value: text);
  final ruleResponse = rule.execute();
  print(ruleResponse.isSuccess); // true
}

状态

Build

贡献者

许可证

本项目采用 BSD 3-Clause License 许可证。

完整示例Demo

以下是一个完整的示例Demo,展示了如何使用多个规则进行验证:

import 'package:flutter/material.dart';
import 'package:zam_rules/zam_rules.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('zam_rules Example')),
        body: Center(
          child: RuleValidationExample(),
        ),
      ),
    );
  }
}

class RuleValidationExample extends StatefulWidget {
  [@override](/user/override)
  _RuleValidationExampleState createState() => _RuleValidationExampleState();
}

class _RuleValidationExampleState extends State<RuleValidationExample> {
  String text = 'Sony Xperia';
  String pattern = 'Sony';
  bool isTextValid = false;
  bool isNumberValid = false;

  void validateText() {
    final rule = TextStartsWithRule(text, pattern, value: text);
    final ruleResponse = rule.execute();
    setState(() {
      isTextValid = ruleResponse.isSuccess;
    });
  }

  void validateNumber() {
    final number = 123;
    final rule = PositiveNumberRule(number);
    final ruleResponse = rule.execute();
    setState(() {
      isNumberValid = ruleResponse.isSuccess;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        TextField(
          onChanged: (value) {
            setState(() {
              text = value;
            });
          },
        ),
        ElevatedButton(
          onPressed: validateText,
          child: Text('Validate Text'),
        ),
        Text(isTextValid ? 'Text is valid' : 'Text is invalid'),
        SizedBox(height: 20),
        ElevatedButton(
          onPressed: validateNumber,
          child: Text('Validate Number'),
        ),
        Text(isNumberValid ? 'Number is valid' : 'Number is invalid'),
      ],
    );
  }
}

更多关于Flutter规则验证插件zam_rules的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter规则验证插件zam_rules的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


zam_rules 是一个用于在 Flutter 应用中进行规则验证的插件。它可以帮助开发者轻松地定义和验证各种业务规则,确保输入数据符合预期的格式和要求。以下是使用 zam_rules 插件的基本步骤和示例:

1. 添加依赖

首先,在你的 pubspec.yaml 文件中添加 zam_rules 依赖:

dependencies:
  flutter:
    sdk: flutter
  zam_rules: ^1.0.0  # 请使用最新版本

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

2. 导入包

在你的 Dart 文件中导入 zam_rules 包:

import 'package:zam_rules/zam_rules.dart';

3. 定义规则

zam_rules 提供了多种内置的规则,例如 RequiredRuleEmailRuleMinLengthRule 等。你也可以自定义规则。

示例 1: 使用内置规则

void main() {
  // 定义规则
  final rules = [
    RequiredRule('username', 'Username is required'),
    MinLengthRule('username', 6, 'Username must be at least 6 characters'),
    EmailRule('email', 'Invalid email address'),
  ];

  // 验证数据
  final data = {
    'username': 'user123',
    'email': 'user@example.com',
  };

  final result = RuleValidator.validate(data, rules);

  if (result.isValid) {
    print('Validation passed!');
  } else {
    print('Validation failed:');
    result.errors.forEach((error) {
      print(error);
    });
  }
}

示例 2: 自定义规则

class CustomRule extends Rule {
  CustomRule(String field, String errorMessage) : super(field, errorMessage);

  @override
  bool isValid(dynamic value) {
    // 自定义验证逻辑
    return value == 'custom_value';
  }
}

void main() {
  final rules = [
    CustomRule('custom_field', 'Custom field must be "custom_value"'),
  ];

  final data = {
    'custom_field': 'custom_value',
  };

  final result = RuleValidator.validate(data, rules);

  if (result.isValid) {
    print('Validation passed!');
  } else {
    print('Validation failed:');
    result.errors.forEach((error) {
      print(error);
    });
  }
}

4. 处理验证结果

RuleValidator.validate 方法返回一个 ValidationResult 对象,你可以通过 isValid 属性检查验证是否通过,并通过 errors 属性获取所有错误信息。

5. 高级用法

zam_rules 还支持更复杂的验证场景,例如组合规则、条件规则等。你可以根据具体需求进行扩展。

示例 3: 组合规则

void main() {
  final rules = [
    AllOf([
      RequiredRule('password', 'Password is required'),
      MinLengthRule('password', 8, 'Password must be at least 8 characters'),
    ]),
    AnyOf([
      RequiredRule('phone', 'Phone is required'),
      RequiredRule('email', 'Email is required'),
    ]),
  ];

  final data = {
    'password': '12345678',
    'email': 'user@example.com',
  };

  final result = RuleValidator.validate(data, rules);

  if (result.isValid) {
    print('Validation passed!');
  } else {
    print('Validation failed:');
    result.errors.forEach((error) {
      print(error);
    });
  }
}
回到顶部