Я запускаю login
процесс с пользовательским BaaS
. Кнопка отправки запускает метод 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
случайному string
в initState
, он устраняет ошибку, но не переназначает widget.data.surname
и widget.data.firstname
на fromJson(reponse.data).surname
и fromJson(response.data).firstname
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;
});
}