flutter bloc pattren Stream Transformer 对象导致语法错误
flutter bloc pattren Stream Transformer objects causing syntax errors
我是 Flutter 和 Dart 语言的新手。在按照教程进行操作时,我创建了一个验证器 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!');
}
}
我在方法上使用静态方法,因为从初始化程序只能访问静态方法。
我是 Flutter 和 Dart 语言的新手。在按照教程进行操作时,我创建了一个验证器 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!');
}
}
我在方法上使用静态方法,因为从初始化程序只能访问静态方法。