如何在flutter中做流构建器从bloc中获取数据?

问题描述 投票:0回答:1

我是BLOC的新手,我正试图从api中读取响应......但每当我调用流构建器时......我的小部件总是停在 wait...... 这是我的代码,这里是api提供者文件

class Provider {
  final _url = '...';

  Future<List<LoginRespon>> login(a, b) async {
    List<LoginRespon> datalogin = [];
    try {
        bool trustSelfSigned = true;
        HttpClient httpClient = new HttpClient()
          ..badCertificateCallback =
              ((X509Certificate cert, String host, int port) =>
                  trustSelfSigned);
        IOClient http = new IOClient(httpClient);
        final response = await http.post(_url,
            headers: {
              HttpHeaders.contentTypeHeader: 'application/json',
            },
            body: json.encode({
              "aa": a,
              "bb": b,
            }));
        Map<String, dynamic> responseJson = json.decode(response.body);

        if (responseJson["status"] == "200") {

          datalogin.add(LoginRespon(
              status: responseJson['status'],
              data: Data(
                  name: responseJson['data']['name'],
                  position: responseJson['data']['pos'])));
          return datalogin;
        } else {
          print("ppp");
        }

    } on Exception {
      rethrow;
    }
    return datalogin;
  }
}

这里是流媒体建设者

                                      isClick
                                        ? StreamBuilder(
                                            stream: bloc.login(),
                                            builder: (context, snapshot) {
                                              if (snapshot.hasData) {
                                                print(snapshot.data);
                                                return Text("success");
                                              } else if (snapshot.hasError) {
                                                return Text(
                                                    snapshot.error.toString());
                                              }
                                              return Text("wait..");
                                            },
                                          )
                                        : FlatButton(
                                            child: Text("Login"),
                                            onPressed: () {
                                              setState(() {
                                                isClick = true;
                                              });
                                            },
                                          ),

有什么办法让我可以调用 print(snapshot.data) 里面 if (snapshot.hasData)

flutter stream bloc
1个回答
1
投票

你需要在方法中传递所需的参数,否则它将不会成功响应(200),并会抛出错误。

© www.soinside.com 2019 - 2024. All rights reserved.