flutter bloc pattren Stream Transformer 对象导致语法错误

flutter bloc pattren Stream Transformer objects causing syntax errors

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

如果我使用传入的 email,我会在 FromHandler 构造函数中的验证器 class 中收到大量错误或 password 它们被识别但是当我像我在这里所做的那样将它们放在 if 语句 中时它们不会被重新识别为字符串对象,这就是此处的错误原因如下面的屏幕截图所示。

apart from them bloc file also has a couple of errors as shown in 2nd screenshot below:

Flutter 版本:0.5.1 飞镖版本:2.0

for full code please have a look inside the login_stateful_bloc folder in this repo : https://github.com/touseefbsb/LoginStateful

只需删除 => 表达式并按如下方式使用:

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

=> expr 语法是 shorthand for { return expr; }. => 符号有时称为粗箭头语法。

Note: Only an expression—not a statement—can appear between the arrow (=>) and the semicolon (;). For example, you can’t put an if statement there, but you can use a conditional expression.

如果你想使用 => ,试试这样:

   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!');
        }

     }

我在方法上使用静态方法,因为从初始化程序只能访问静态方法。