登录后重定向到新页面时,我得到了脏状态异常。在此主页上,我从首选项中获取信息。
class Home extends StatefulWidget{
@override
State<StatefulWidget> createState() => new _HomeState();
}
class _HomeState extends State<Home> {
Drawer drawer = new Drawer();
String strName, strEmail, strImageURL;
int userId;
Image imgProfile;
@override
void initState() {
super.initState();
_loadSharedPref();
}
//Loading Shared value on start
_loadSharedPref() async {
print('In Shared Profile');
try{
SharedPreferences prefs = await SharedPreferences.getInstance();
strName = prefs.getString('name');
print('Shared Profile Name '+strName);
setState(() {
strName = prefs.getString('name');
userId = prefs.getInt('userId');
strEmail = prefs.getString('email');
strImageURL = prefs.getString('avatar');
imgProfile = Image.network(Config.PROFILE_PIC+strImageURL);
print('Image URL ---- '+Config.PROFILE_PIC+strImageURL);
});
}catch(exception){
print('SharedProfile '+exception);
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: new Scaffold(
backgroundColor: whiteColor,
drawer: sideDrawer(),
appBar: new AppBar(
title: new Text('Test Page'),
),
),
);
}
//Profile Details
Widget profileDetail() {
return new DrawerHeader(
child: new Column(
children: <Widget>[
new CircleAvatar(
radius: 40,
backgroundColor : blueColor,
backgroundImage: new NetworkImage(Config.PROFILE_PIC+strImageURL),
),
],
)
);
}
//Side Drawer
Widget sideDrawer(){
return new Drawer(
child: new ListView(
children: <Widget>[
new Center(
child: profileDetail(),
),
new ListTile(
leading: new Icon(Icons.lightbulb_outline),
title: new Text('Requests'),
// onTap: () => _onListTileTap(context),
),
new ListTile(
leading: new Icon(Icons.lightbulb_outline),
title: new Text('Reviews'),
// onTap: () => _onListTileTap(context),
),
new ListTile(
leading: new Icon(Icons.lightbulb_outline),
title: new Text('Setting'),
// onTap: () => _onListTileTap(context),
),
new ListTile(
leading: new Icon(Icons.lightbulb_outline),
title: new Text('Tip'),
// onTap: () => _onListTileTap(context),
),
new ListTile(
leading: new Icon(Icons.lightbulb_outline),
title: new Text('Conditions'),
// onTap: () => _onListTileTap(context),
),
new ListTile(
leading: new Icon(Icons.lightbulb_outline),
title: new Text('About Us'),
// onTap: () => _onListTileTap(context),
),
new ListTile(
leading: new Icon(Icons.lightbulb_outline),
title: new Text('Log Out'),
// onTap: () => _onListTileTap(context),
),
],
),
);
}
}
答案 0 :(得分:0)
您可能没有在首选项中填写“名称”,“ userId”,“头像”或“电子邮件”字段,而尝试使用SharedPreferences时却收到此错误。
答案 1 :(得分:0)
我遇到了同样的问题。检查具有共享的pref值的变量为null或对我不起作用。
在小部件中使用它们之前,请尝试检查strName,userId,strEmail,strImageURL,imgProfile是否为空。
if(strImageURL != null)
{
print('filepaths: '+strImageURL);
}
尝试一下
//Profile Details
Widget profileDetail() {
return new DrawerHeader(
child: new Column(
children: <Widget>[
new CircleAvatar(
radius: 40,
backgroundColor : blueColor,
backgroundImage: strImageURL ?? AssetImage('some static file path') : NetworkImage(Config.PROFILE_PIC+strImageURL),
),
],
)
);
}
答案 2 :(得分:0)
每次尝试像这样从sharedPreference调用数据时,只需创建一条语句
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())