【问题标题】:How to handle the ConnectionState of StreamBuilder when typing keyboard using iOS build of flutter?使用 Flutter 的 iOS 版本键入键盘时如何处理 StreamBuilder 的 ConnectionState?
【发布时间】:2019-07-25 11:22:57
【问题描述】:

我在输入键盘关闭时使用rxdart library 登录屏幕。因为在 Flutter 的 iOS 版本中重建了 ConnectionState of StreamBuilder

Widget handleLogin() {
    return StreamBuilder(
        stream: lgbloc.loginData,
        builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
          print(snapshot.connectionState);
          if (snapshot.hasError ) {
            isClick = false;
            _controller.reverse();
            Timer(Duration(seconds: 3), (){snapshot.hasError.toString();});
            return setLoginText();
          }
          else {
            _skLoginModel = snapshot.data;
            if(_skLoginModel != null){
              if (_skLoginModel.user != null){
                isClick = false;
                _controller.reverse();
                initBloc.saveData(_skLoginModel.user);
                return loginFinish();
              }
              else if (_skLoginModel.error != null && _skLoginModel.error.isNotEmpty){
                _controller.reverse();
                Timer(Duration(milliseconds: 500), (){
                  showInSnackBar(_skLoginModel.error);
                  _skLoginModel.error = null;
                  isClick = false;
                });
                return setLoginText();
              }
              else{
                if(isClick){
                  _controller.forward();
                  return setLoading();
                }
                else{
                  _controller.reverse();
                  return setLoginText();
                }
              }
            }
            else {
              _controller.reverse();
              return setLoginText();
            }
          }

        });
  }

我希望键盘仍然显示。

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    这几天我遇到了同样的问题,得到了solved(这里只显示了路线问题)。

    文本字段在路由和流生成器方面存在一些问题,我的最终解决方案是将 StreamBuilder 包装到一个小部件中,我将其保存在状态中。 (如示例中的底部小部件)。然后这个widget会根据snapshot.data调用不同的Widget。

    在这些干净的小部件(没有 Streambuilders 等)中,我的 TextFields 存在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-13
      • 2017-07-24
      相关资源
      最近更新 更多