我想创建一个 TextField 来检查数据库中是否存在该值。
如何使用带TextField小部件的BLOC 模式进行异步验证?我应该使用StreamTransformer将错误添加到Stream? 我尝试使用,DebounceStreamTransformer但它只是阻止Stream接收新值。
这是我的 Observable
Observable<String> get valueStream => valueController.stream.transform(PropertyNameExist.handle('Blabla', null));
Run Code Online (Sandbox Code Playgroud)
这是我的 StreamTransformer
class PropertyNameExist implements StreamTransformerValidator {
static StreamTransformer<String, String> handle(String fieldname, String data) {
Http http = new Http();
return StreamTransformer<String, String>.fromHandlers(
handleData: (String stringData, sink) {
http.post('/my_api',data:{
'property_name':stringData,
}).then((Response response){
Map<String,dynamic> responseData = jsonDecode(response.data);
bool isValid = responseData['valid'] == 'true';
if(isValid){
sink.add(stringData);
} else {
sink.addError('Opps Error');
}
});
});
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的 Widget …