【发布时间】:2019-04-02 09:41:06
【问题描述】:
我正在使用自定义BaaS 运行login 进程。提交按钮运行onPressed 方法,该方法检查Response response; if reponse.statusCode == 200 然后将fromJson(reponse.data).surname 和fromJson(response.data).firstname 发送到Homepage 屏幕。我已经设置了到Homepage 屏幕的通道并且它可以工作,但是当我尝试Hot Reload 应用程序然后尝试访问主页时,它会抛出NoSuchMethodError I/flutter (14935): The getter 'surname' was called on null. 我该如何解决这个问题?
我尝试将widget.data.surname 分配给initState 中的随机string,它可以清除错误,但不会将widget.data.surname 和widget.data.firstname 重新分配给fromJson(reponse.data).surname 和@987654339 @
class Data
{
String surname = '';
String firstname= '';
Data ({this.surname, this.firstname});
}
Response response;
Dio dio = new Dio();
response = await dio.get(findUrl, queryParameters: {"username": _username, "password": _password});
print(response.statusCode);
if(response.statusCode == 200){
print(UsersInfo.fromJson(response.data).surname);
userSurname = UsersInfo.fromJson(response.data).surname;
userFirstname = UsersInfo.fromJson(response.data).firstname;
var data = Data (
surname: userSurname,
firstname: userFirstname
);
Fluttertoast.showToast(
msg: "Login successful",
toastLength: Toast.LENGTH_LONG,
gravity: ToastGravity.BOTTOM,
timeInSecForIos: 6,
backgroundColor: Colors.black,
textColor: Colors.white,
fontSize: 16.0
);
Future.delayed (Duration(seconds: 7),
() async {
Navigator.push(context,
MaterialPageRoute(builder: (context) => HomePage(data: data))
);
print('7 seconds');
}
);
}
第二个屏幕(主页屏幕)
Data data;
HomePage ({this.data});
enum AuthStatus {
notSignedIn,
signedIn
}
AuthStatus _authStatus = AuthStatus.notSignedIn;
@override
initState() {
super.initState();
setState(() {
widget.data = Data (surname: '', firstname: '');
_authStatus = ((widget.data.surname == '')) ? AuthStatus.notSignedIn : AuthStatus.signedIn;
});
}
【问题讨论】:
标签: android json flutter response