启动时未执行初始化状态



这里有我的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中。

最新更新