flutter blocpattren Stream Transformer 对象导致语法错误

Muh*_*eef 4 android reactive-programming dart flutter react-state-management

我是FlutterDart语言的新手。而沿教程中,我创建其中有2个验证程序类以下StreamTransformers,这是被在试图完成集团pattren,其中用户将在2周键入电子邮件地址和密码的TextField,因此将被验证每次在他们的文本改变。

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

验证器文件错误

除了它们,bloc文件还有一些错误,如下面的第二个屏幕截图所示:

块 文件错误

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

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

die*_*per 5

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

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

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

     }
Run Code Online (Sandbox Code Playgroud)

我在方法上使用静态,因为只有静态方法才能从初始值设定项中访问。