我是 Flutter 和 Dart 语言的新手。在遵循本教程的过程中,我创建了一个具有2个 StreamTransformers 的验证器类,这是为尝试 bloc pattren进行的,用户将在2个输入电子邮件和密码的< strong> TextFields ,因此每次文本更改时都会对其进行验证。
如果我使用传入的电子邮件或密码,则会发现大量错误,特别是在 FromHandler 构造函数中的验证器类中,这些错误可以被识别但是当我像在这里一样将它们放在 if语句中时,它们不会重新识别为字符串对象,这就是导致错误的原因,如下面的屏幕截图所示。
除它们之外的bloc 文件还存在一些错误,如下面的第二张屏幕截图所示:
Flutter版本:0.5.1 飞镖版本:2.0
有关完整代码,请查看此仓库中的 login_stateful_bloc 文件夹:https://github.com/touseefbsb/LoginStateful
答案 0 :(得分:3)
只需删除=>表达式并按以下方式使用:
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!');
}
}
我在方法上使用静态方法,因为只能从初始化程序访问静态方法。