[英]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.