我正在使用共享首选项保存用户名和登录状态,即使在关闭应用程序后也是如此。我在main. dart中使用的共享首选项很好,因为我在main函数中使用了它,并将其设置为异步,但当我尝试在其他类中使用它时,在加载页面之前,我看到一个暗红色屏幕,持续时间不到一秒,这让我的应用程序变得如此丑陋。我该怎么做才能修复它?
下面是我的代码:
late bool _isEditingText;
TextEditingController _editingController = TextEditingController();
late String initialText ;
SharedPreferences? _prefs;
@override
void initState(){
super.initState();
initializePreference().whenComplete((){
setState(() {});
});
}
Future<void> initializePreference() async{
_prefs = await SharedPreferences.getInstance();
String? name = _prefs?.getString('name');
if (name == null) {
_isEditingText = true;
initialText = 'Enter ur name';
} else {
_isEditingText = false;
initialText = name;
}
}
- 更新:**抱歉没有包括我的确切错误...这里是:
第一个月
1条答案
按热度按时间smdncfj31#
我认为你在初始化所有小部件之前执行了setState。因此,你可以如下更新
initState
:如果它没有导致问题,那么你必须显示加载指示符。就像最初没有数据指示符时,一旦你从setState中的SharedPreference获得数据-你必须删除指示符并加载数据。
您可以使用
CircularProgressIndicator
来实现这一点。初始化布尔变量,
一旦你在whenComplete()中得到数据,就把它设置为true,然后基于这个变量你就可以声明你的小部件了。