【发布时间】: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 flutter
在 inData 方法中的 bloc 文件内发生异常时暂停有没有办法解决这个问题 Exception has occurred. _TypeError (type 'List<LoginRespon>' is not a subtype of type 'String')
【问题讨论】:
-
代码不清晰,乱七八糟。我找不到 userAPIProvider.saving 方法。是 addSave()
-
是的。我刚刚编辑了我的代码