【问题标题】:Get value from shared preference in Flutter从 Flutter 中的共享偏好中获取价值
【发布时间】:2020-03-12 20:40:37
【问题描述】:

尊敬的 Stackoverflow 社区,

我想在我的应用中获取语言环境的值。我正在使用共享首选项,我想在另一个页面中使用区域设置语言值,但我找不到调用该值的方法:

这是我的页面 main.dart :

    class TranslatePreferences implements ITranslatePreferences
{
  static const String _selectedLocaleKey = 'selected_locale';

  @override
  Future<Locale> getPreferredLocale() async
  {
    final preferences = await SharedPreferences.getInstance();

    if(!preferences.containsKey(_selectedLocaleKey)) return null;

    var locale = preferences.getString(_selectedLocaleKey);
    return localeFromString(locale);

  }


  @override
  Future savePreferredLocale(Locale locale) async
  {
    final preferences = await SharedPreferences.getInstance();

    await preferences.setString(_selectedLocaleKey, localeToString(locale));

  }


}

如果我理解得很好,我必须在我的其他页面中使用 getPreferredLocale(),但即使我导入 main.dart,我也可以在 lang.dart 页面中获取 getPreferredLocale():

class lang{
string lang=TranslatePreferences.getPreferredLocale();
print(lang);

}

感谢您的帮助。

【问题讨论】:

    标签: android flutter sharedpreferences


    【解决方案1】:

    TranslatePreferences 文件的底部(在类之外)添加:

    TranslatePreferences translatePreferences = TranslatePreferences();
    

    然后在lang 类中你可以使用它:

    string lang=translatePreferences.getPreferredLocale();
    

    【讨论】:

    • 我不确定,但我认为您还需要将static const String _selectedLocaleKey... 更改为String _selectedLocaleKey...
    • 您好,谢谢,但是当我想打印 (lang.toString()) 时,我得到了 'Future' 的实例,我怎么能通过它呢?谢谢
    • 我找到了使用 translatePreferences.getPreferredLocale().then(value) 进行打印的方法.....
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多