如何在小部件中调用 extractedUserData
How to call extractedUserData inside widget
我正在处理登录页面,我正在使用 ShardPreferences 我已将我的数据带到主页。
现在我需要在小部件中包含该数据。
我想在存储 json.decode.
的小部件内调用 extractedUserData
class _HomeScreenState extends State<HomeScreen> {
@override
void initState() {
super.initState();
sf_extractedUserData();
}
Future<void> sf_extractedUserData() async {
final pref = await SharedPreferences.getInstance();
final extractedUserData = json.decode(pref.getString('userData') as String);
print('HomeScreen :extractedUserData2' + extractedUserData.toString());
print('extractedUserData uid: ' + extractedUserData['uid']);
print('extractedUserData user_name: ' + extractedUserData['user_name']);
print('extractedUserData user_email: ' + extractedUserData['user_email']);
print('extractedUserData : ' + extractedUserData);
setState(() {});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Home"),
),
body: Column(
children: [
Center(
child: RaisedButton(
onPressed: () {
Navigator.of(context).pushReplacementNamed('/');
Provider.of<Auth>(context, listen: false).logout();
},
shape:
RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
child: Text('logout'),
color: Colors.green,
)
),
],
),
);
}
}
First make your future function return String 'extractedUserData' then Use flutter's Futurebuilder for this.
未来构建器接受未来参数并在数据到达后立即构建小部件。
这是一个例子:-
return FutureBuilder(
future: sf_extractedUserData(),
builder: (context, response){
return response.hasData ? Container(
//Layout when data is returned by sf_extractedUserData
):
Conatiner(
//Layout when data is not returned yet
);
},
);
通过这种方式,您将能够在小部件内呈现您的数据。
Also please stop calling SetState unnecessary its a powerful feature which also leads to many problems if used unnecessary.
一如既往..
快乐编码
我正在处理登录页面,我正在使用 ShardPreferences 我已将我的数据带到主页。 现在我需要在小部件中包含该数据。 我想在存储 json.decode.
的小部件内调用 extractedUserDataclass _HomeScreenState extends State<HomeScreen> {
@override
void initState() {
super.initState();
sf_extractedUserData();
}
Future<void> sf_extractedUserData() async {
final pref = await SharedPreferences.getInstance();
final extractedUserData = json.decode(pref.getString('userData') as String);
print('HomeScreen :extractedUserData2' + extractedUserData.toString());
print('extractedUserData uid: ' + extractedUserData['uid']);
print('extractedUserData user_name: ' + extractedUserData['user_name']);
print('extractedUserData user_email: ' + extractedUserData['user_email']);
print('extractedUserData : ' + extractedUserData);
setState(() {});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Home"),
),
body: Column(
children: [
Center(
child: RaisedButton(
onPressed: () {
Navigator.of(context).pushReplacementNamed('/');
Provider.of<Auth>(context, listen: false).logout();
},
shape:
RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
child: Text('logout'),
color: Colors.green,
)
),
],
),
);
}
}
First make your future function return String 'extractedUserData' then Use flutter's Futurebuilder for this.
未来构建器接受未来参数并在数据到达后立即构建小部件。
这是一个例子:-
return FutureBuilder(
future: sf_extractedUserData(),
builder: (context, response){
return response.hasData ? Container(
//Layout when data is returned by sf_extractedUserData
):
Conatiner(
//Layout when data is not returned yet
);
},
);
通过这种方式,您将能够在小部件内呈现您的数据。
Also please stop calling SetState unnecessary its a powerful feature which also leads to many problems if used unnecessary.
一如既往..
快乐编码