我是 Flutter 和 Dart 语言的新手。在遵循教程的同时,我创建了一个具有 2 个 StreamTransformers 的验证器类,这是为了尝试 bloc pattren,用户将在 2 bloc 模式中输入电子邮件和密码strong>TextFields,因此每次文本更改时都会对其进行验证。
如果我使用传入的 email 或 password 它们被识别,我会在 FromHandler 构造函数中的该验证器类中遇到大量错误但是当我像我在这里所做的那样将它们放在 if 语句 中时,它们不会被识别为字符串对象,这就是这里出现错误的原因,如下面的屏幕截图所示。
apart from them bloc file also has a couple of errors as shown in 2nd screenshot below:
Flutter 版本:0.5.1 Dart 版本: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 语法是 { 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!');
}
}
我在方法上使用了静态方法,因为只有静态方法可以从初始化程序中访问。
关于android - flutter bloc pattren Stream Transformer 对象导致语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51884521/