这里有我的HomeScreen.dart文件的一部分:
String _mi_email='';
String _mi_nombre='';
String _mis_apellidos='';
String _mi_foto='';
String _mi_clinica='';
String _mi_id='';
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
@override
Widget build(BuildContext context) {
void getValues() async {
SharedPreferences sharedPrefs = await SharedPreferences.getInstance();
_mi_email = sharedPrefs.getString('email');
_mi_clinica = sharedPrefs.getString('clinica') ?? "ninguna";
_mi_nombre = sharedPrefs.getString('nombre') ?? "ninguno";
_mis_apellidos = sharedPrefs.getString('apellidos') ?? "ningunos";
_mi_foto = sharedPrefs.getString('foto') ?? "ninguna";
_mi_id = sharedPrefs.getString('id') ?? "0";
}
@override
void initState() {
super.initState();
getValues();
}
...
我需要的是每次主屏幕启动时运行getValues()。
使用我当前的代码,它不会发生。
您需要在构建方法外部或_HomeScreenState内部编写 initState 方法。你的代码将看起来像这样
String _mi_email='';
String _mi_nombre='';
String _mis_apellidos='';
String _mi_foto='';
String _mi_clinica='';
String _mi_id='';
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
void getValues() async {
SharedPreferences sharedPrefs = await SharedPreferences.getInstance();
_mi_email = sharedPrefs.getString('email');
_mi_clinica = sharedPrefs.getString('clinica') ?? "ninguna";
_mi_nombre = sharedPrefs.getString('nombre') ?? "ninguno";
_mis_apellidos = sharedPrefs.getString('apellidos') ?? "ningunos";
_mi_foto = sharedPrefs.getString('foto') ?? "ninguna";
_mi_id = sharedPrefs.getString('id') ?? "0";
}
@override
void initState() {
getValues();
super.initState();
}
@override
Widget build(BuildContext context) {
...
你需要将方法getValues()
. 写入类_HomeScreenState
而不是在build
中。