共享首选项 Flutter(如何在构建方法中使用共享首选项)

时间:2021-05-10 06:34:31

标签: flutter dart sharedpreferences flutter-dependencies

嗨,我是 flutter 新手,我正在努力在 builder 方法中使用共享首选项,这是我的代码:

getId() async {
      SharedPreferences prefs = await SharedPreferences.getInstance();
      String sessionId = prefs.getString('sessionId');
      return Text(sessionId);
    }

这是我的构建方法的一部分:

ListTile(
                  title: Text(
                    'Welcome, $getId()',
                    style: TextStyle(color: Colors.white),
                  ),

这是我尝试在文本小部件中使用共享首选项时得到的错误输出:

dynamic function closure flutter

2 个答案:

答案 0 :(得分:0)

您可以使用 FutureBuilder 小部件

示例:

FutureBuilder(
      future: getId(),
      builder: (context, snapshot) {
        if (snapshot.hasData){
          return ListTile(
              title: Text(
                'Welcome, ${snapshot.data}',
                style: TextStyle(color: Colors.white),
              ),
        }else if (snapshot.hasError){
          return Container(); //Error getting data
        }else{
          return Container(); //show Loading
        }
      },);

并且在您的 getId() 中返回 String 而不是 Text Widget 示例:

getId() async {
      SharedPreferences prefs = await SharedPreferences.getInstance();
      String sessionId = prefs.getString('sessionId');
      return sessionId;
    }

答案 1 :(得分:0)

调用 initState 中的 getId 函数为变量“id”赋值。

@override
 void initState() {
 super.initState();
 getId.then((value) => setState(() {
      id = value;
    }));
}

在你的构建方法中

  ListTile(
              title: Text(
                'Welcome, $id',
                style: TextStyle(color: Colors.white),
              ),

您的 getId 函数将返回字符串

getId() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  String sessionId = prefs.getString('sessionId');
  return sessionId;
}
相关问题