RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1140024
Accepted
Дмытрык
Дмытрык
Asked:2020-06-12 16:50:06 +0000 UTC2020-06-12 16:50:06 +0000 UTC 2020-06-12 16:50:06 +0000 UTC

分阶段字段验证

  • 772

在验证各种字段时,计划使用这样一个类:

class InputValidator {
  InputValidator({this.error = ''});
  final String error;

  String email(value) {
    final globalValidator = GlobalValidator();
    bool result = globalValidator.email(value);
    String err = error != '' ? error : "This is not email";
    return result ? null : err;
  }

  String require(value) {
    String err = error != '' ? error : "This field is required";
    return value != '' ? null : err;
  }

  String stepByStep(value) {
    return 'xxx';
  }
}

使用示例

Input(
      label: "Email",
      type: 'email',
      controller: emailController,
      validator: inputValidator.stepByStep
      ),

面临分阶段验证现场的问题。意思是,对具有不同错误的同一字段的几个不同验证。例如,首先我定义 to require,然后匹配电子邮件模式。我计划在同一个类中创建一个 stepByStep 方法,其中会发生必要的魔法。但我不知道如何在 Dart 中正确地做到这一点。

在 JS 中,我会有条件地这样做:

function stepByStep(value, steps){
  stepsName.forEach(stepName => {
    this[stepName](value);
  })
}

stepByStep('xxx', ['require', 'email']);
flutter
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. Best Answer
    MiT
    2020-06-12T19:17:56Z2020-06-12T19:17:56Z

    我只看到这样的解决方案(如果您不想使用enum,那么您也可以在线进行):

    enum InputSteps { require, email }
    
    class InputValidator {
      InputValidator({this.error = ''});
      final String error;
    
      String _email(value) {
        final globalValidator = GlobalValidator();
        bool result = globalValidator.email(value);
        String err = error != '' ? error : "This is not email";
        return result ? null : err;
      }
    
      String _require(value) {
        String err = error != '' ? error : "This field is required";
        return value != '' ? null : err;
      }
    
      String stepByStep(value, InputSteps steps) {
        switch (steps) {
          case InputSteps.require:
            return _email(value);
          case InputSteps.email:
            return _require(value);
        }
      }
    }
    
    • 1
  2. Дмытрык
    2020-06-13T03:37:37Z2020-06-13T03:37:37Z

    是这样的吗:

    class InputValidator {
      InputValidator({this.error = '', this.steps});
      final String error;
      final List<Function> steps;
    
      String email(value) {
        final globalValidator = GlobalValidator();
        bool result = globalValidator.email(value);
        String err = error != '' ? error : "This is not email";
        return result ? null : err;
      }
    
      String require(value) {
        String err = error != '' ? error : "This field is required";
        return value != '' ? null : err;
      }
    
      String stepByStep(value) {
        for (var element in steps) {
          final check = element(value);
          // здесь провести необходимые действия при том или ином результате последовательной валидации
        }
        return 'xxx';
      }
    }
    

    用法:

    final inputValidator = InputValidator(steps: [InputValidator().require, InputValidator().email]);
    
    Input(
          label: "Email",
          type: 'email',
          controller: emailController,
          validator: inputValidator.stepByStep
          ),
    
    • 1

相关问题

  • 1 秒后打印每个列表值

  • 颤振函数调用

  • 如何将代码分配给参数

  • 如何在字符串中放置空格?

  • 更改 Firestore 中的布尔值

  • 显示数据

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何从列表中打印最大元素(str 类型)的长度?

    • 2 个回答
  • Marko Smith

    如何在 PyQT5 中清除 QFrame 的内容

    • 1 个回答
  • Marko Smith

    如何将具有特定字符的字符串拆分为两个不同的列表?

    • 2 个回答
  • Marko Smith

    导航栏活动元素

    • 1 个回答
  • Marko Smith

    是否可以将文本放入数组中?[关闭]

    • 1 个回答
  • Marko Smith

    如何一次用多个分隔符拆分字符串?

    • 1 个回答
  • Marko Smith

    如何通过 ClassPath 创建 InputStream?

    • 2 个回答
  • Marko Smith

    在一个查询中连接多个表

    • 1 个回答
  • Marko Smith

    对列表列表中的所有值求和

    • 3 个回答
  • Marko Smith

    如何对齐 string.Format 中的列?

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5