如何在小部件中调用 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.

一如既往..
快乐编码