首页 > 解决方案 > 如何从外部使用 var SharedPreferences 函数 Flutter

问题描述

我使用 SharedPreferences 保存字体大小,并且当 (initstat) 数据中的 print (myfont) 为 Null 时。以及 getprefs() 之外的任何地方。为什么 ?

我用这个代码

  class MyASetting extends State<SettingPage> {
bool checkfont = true;
double myfont  ;

saveprefs(bool val) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
  checkfont = val;
  prefs.setBool("checkfont", checkfont);
  getprefs();
 });
  } // save sharde

  getprefs() async {
  try {
   SharedPreferences prefs = await SharedPreferences.getInstance();
   setState(() {
     checkfont = prefs.getBool("checkfont");
    if (checkfont == true) {
      myfont = 20;
    } else {
      myfont = 16;
    }
    return myfont;
  });
} catch (e) {
  print("Sorry");
}
 } // get shared

 @override
 void initState() {
   super.initState();
   print(myfont);
   getprefs();
   }

标签: flutter

解决方案


把它放在 setState 范围之外

  prefs.setBool("checkfont", checkfont);

您的最终代码必须是:

saveprefs(bool val) async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  prefs.setBool("checkfont", val);
  setState(() {
    checkfont = val;
  // getprefs();
  });
} // save sharde


推荐阅读