【问题标题】:How to handle list model in bloc flutter如何在块颤动中处理列表模型
【发布时间】:2020-08-17 14:59:15
【问题描述】:

我正在尝试在我的登录页面中使用 BLOC.. 但是我总是因为异常而暂停,说 Exception has occurred. _TypeError (type 'List<LoginRespon>' is not a subtype of type 'String') 这里是代码

isClick == true
                                        ? StreamBuilder(
                                            initialData: bloc.inData(_name.text,_password.text),
                                            stream: bloc.loginData,
                                            builder: (context,
                                                AsyncSnapshot snapshot) {
                                              if (snapshot.hasData) {
                                                  print(snapshot.data);
                                                  print('ppp ');

                                                  return Text('ok');
                                                } else
                                                  return Text(snapshot.error
                                                      .toString());
                                            })
                                        : RaisedButton(
                                            child: Text('Login'),
                                            onPressed: () {
                                              setState(() {
                                                isClick = true;
                                              });
                                            },
                                          ),

这里是块文件

class MyBLoc{

  final _repository = Repository();
  final _loginController = StreamController<String>();
  Stream<String> get loginData => _loginController.stream;

final _name = BehaviorSubject<String>();
  final _password = BehaviorSubject<String>();
  saving(){
    _repository.saving(_name.value,_password.value);
  }


  inData(String name, String password) async {
// I get paused on exception inside this method...
    String result = await _repository.saving(name, password);
    _loginController.sink.add(result);
  }


  dispose(){
    _input.close();
    _loginController.close();
    _password.close();
  }
}
final bloc = MyBLoc();

这是我的存储库文件

class Repository{
  static final userAPIProvider = UserProvider();
  Future saving(String name, String password) => userAPIProvider.saving(name, password);
}

这是我的提供者

class UserProvider {
  final _url = '...';
  Future<List<LoginRespon>> saving(String name, String password) async {
    List<LoginRespon> datalogin = [];
    try {
      bool trustSelfSigned = true;
      HttpClient httpClient = new HttpClient()
        ..badCertificateCallback =
            ((X509Certificate cert, String host, int port) => trustSelfSigned);
      IOClient client = new IOClient(httpClient);
      print("cek");
      final response = await client.post(_url,
          headers: {
            HttpHeaders.contentTypeHeader: 'application/json',
          },
          body: json.encode({
            "name": name,
            "pas": password,
          }));
      Map<String, dynamic> responseJson = json.decode(response.body);

      if (responseJson["status"] == "200") {
        datalogin.add(LoginRespon(
            status: responseJson['status'],
            data: Data(
                name: responseJson['data']['name'],
                status: responseJson['data']['status'])));
        return datalogin;
      } else {
        print("ppp");
      }
    } on Exception {
      rethrow;
    }
    return datalogin;
  }}

我的 LoginRespon 模型可在此处获得 how to create a list from json string in flutterinData 方法中的 bloc 文件内发生异常时暂停有没有办法解决这个问题 Exception has occurred. _TypeError (type 'List&lt;LoginRespon&gt;' is not a subtype of type 'String')

【问题讨论】:

  • 代码不清晰,乱七八糟。我找不到 userAPIProvider.saving 方法。是 addSave()
  • 是的。我刚刚编辑了我的代码

标签: string list flutter bloc


【解决方案1】:

在MyBloc中,返回值应该是String

 String result = await _repository.saving(name, password); 

但存储库中的以下行并非如此

Future saving(String name, String password) => userAPIProvider.saving(name, password);

它正在返回List&lt;LoginRespon&gt;

【讨论】:

  • 有没有办法把String result改成List
  • 根据需要的数据类型更改StreamController。
猜你喜欢
  • 1970-01-01
  • 2022-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
  • 1970-01-01
  • 2020-11-11
  • 2021-06-23
相关资源
最近更新 更多