小编fir*_*han的帖子

如何在 Flutter TextField 中使用 BLOC 模式进行后端验证?

我想创建一个 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 …

dart flutter rxdart bloc

7
推荐指数
1
解决办法
3739
查看次数

标签 统计

bloc ×1

dart ×1

flutter ×1

rxdart ×1