【问题标题】:Problem with data sharedpreferences - Flutter数据共享首选项的问题 - Flutter
【发布时间】:2019-02-09 11:52:49
【问题描述】:

当我从 SharedPreferences 中获取数据时,它不会在字符串中显示它,并在此行 accountName:Text(sharedPreferenceEmail) 中给出错误, 错误显示 sharedPreferenceEmail = null

SharedPreferences sharedPreferences;
  String sharedPreferenceEmail;
  String value;

  @override
  void initState() {
    super.initState();
    getDataPreference();
  }

  getDataPreference() async {
    sharedPreferences = await SharedPreferences.getInstance();
    setState(() {
      value = sharedPreferences.getString("email");
      if(value != null) {
        sharedPreferenceEmail = sharedPreferences.getString("email");
      } else {
        sharedPreferenceEmail = "Sign in with Google";
      }
    });
  }

UserAccountsDrawerHeader(
                decoration: BoxDecoration(color: Colors.blueGrey[900]),
                accountName: Text(
                  sharedPreferenceEmail
                  ),

enter image description here

【问题讨论】:

  • 如果你使用accountName: sharedPreferenceEmail != null ? Text( sharedPreferenceEmail ) : Container(),会发生什么?
  • 以及在 Container() 中放入什么?
  • 没什么,它只是一个占位符,直到共享首选项中的数据可用。它是异步的,并且有一些延迟到达,然后显示一个空的Container()
  • 我不能用accountName写下划线
  • 对不起,我错了,一切都有帮助,非常感谢!)))

标签: android dart flutter sharedpreferences


【解决方案1】:

如果您使用异步执行获取值,则需要再次保护null,以免在 Flutter 构建而结果尚未到达时引发异常:

accountName: sharedPreferenceEmail != null ? Text( sharedPreferenceEmail ) : Container(),

【讨论】:

  • 感谢您的帮助)
  • 如果它解决了您的问题,请不要忘记点击左下角向上/向下投票按钮下方的复选标记接受答案。
猜你喜欢
  • 2019-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-04
  • 1970-01-01
  • 1970-01-01
  • 2021-03-05
  • 2020-08-01
相关资源
最近更新 更多