簡體   English   中英

如何處理集團 flutter 中的列表 model

[英]How to handle list model in bloc flutter

我正在嘗試在我的登錄頁面中使用 BLOC .. 但我總是因為Exception has occurred. _TypeError (type 'List<LoginRespon>' is not a subtype of type 'String') 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 model 可以在這里找到如何從 flutter 中的 json 字符串創建列表inData方法中的 bloc 文件中發生異常時暫停。有沒有辦法解決這個問題Exception has occurred. _TypeError (type 'List<LoginRespon>' is not a subtype of type 'String') Exception has occurred. _TypeError (type 'List<LoginRespon>' is not a subtype of type 'String')

在 MyBloc 中,返回的值應該是 String

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

但是存儲庫中的以下行並非如此

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

它正在返回List<LoginRespon>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM