4

我是FlutterDart语言的新手。在按照教程进行操作时,我创建了一个具有 2 个StreamTransformers的验证器类,这是为了尝试bloc pattren,用户将在 2 个TextFields中键入电子邮件和密码,因此每次文本更改时都会对其进行验证。

如果我使用传入的电子邮件密码,我会在FromHandler构造函数中的那个验证器类中遇到大量错误,但是当我将它们放在我在这里所做的if 语句中时,它们不会被识别为字符串对象,那就是如您在下面的屏幕截图中所见,此处的错误原因。

验证器文件错误

除了他们bloc文件也有几个错误,如下面的第二个屏幕截图所示:

bloc 文件错误

颤振版本:0.5.1 飞镖版本:2.0

有关完整代码,请查看此 repo 中的login_stateful_bloc文件夹: https ://github.com/touseefbsb/LoginStateful

4

1 回答 1

5

只需删除 => 表达式并像这样使用:

    final validateEmail = StreamTransformer<String,String>.fromHandlers(
        handleData: (email,sink) {
          if(email.contains('@')){
            sink.add(email);
          }
          else{
            sink.addError('Email not valid!');
          }
        }
       );

=> expr 语法是 { return expr; 的简写;}。=> 符号有时被称为胖箭头语法。

注意:箭头 (=>) 和分号 (;) 之间只能出现表达式,而不是语句。例如,您不能在其中放置 if 语句,但可以使用条件表达式。

如果您想使用 => ,请尝试以下操作:

   final validateEmail = StreamTransformer<String,String>.fromHandlers(
      handleData: (email, sink) => _fatArrowMethod(email,sink));

     static _fatArrowMethod(email, sink){
       if(email.contains('@')){
          sink.add(email);
        }
        else{
          sink.addError('Email not valid!');
        }

     }

我在该方法上使用了静态方法,因为只有静态方法可以从初始化程序中访问。

于 2018-08-16T20:22:05.310 回答