【问题标题】:Get language from Shared Prefences in Flutter从 Flutter 中的 Sharedpreferences 获取语言
【发布时间】:2020-06-12 11:32:04
【问题描述】:

我想将当前语言保存在一个变量中,以便在其他页面中使用它。我将 shared_preferences 与 flutter_translate 一起使用。

在我的 app.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));

  }


}

如果我打印:

print(TranslatePreferences().getPreferredLocale());

我明白了:Instance of 'Future&lt;Locale&gt;'

如何管理它以获取 getPreferredLocale() 的值并存储在变量中?

谢谢

【问题讨论】:

  • await TranslatePreferences().getPreferredLocale() : dart.dev/codelabs/async-await
  • 我以这种方式获取打印中的值: Current() async { TranslatePreferences().getPreferredLocale(); var a=await TranslatePreferences().getPreferredLocale();返回一个;但是当我 print(Current());我明白了: 'Future' 的实例 我如何获得返回值?谢谢

标签: flutter dart sharedpreferences


【解决方案1】:
final Future<String> futureValue = Future.value("Hello !");

同步中打印未来值

void main() {
  futureValue.then((value) => print(value)); // Hello !
}

异步中打印未来值

void main() async {
  final value = await futureValue;
  print(value); // Hello !
}

【讨论】:

  • 谢谢,我做到了,但我如何才能从主目录中获取价值?
  • 只能异步获取值。
  • 我必须在虚空中启动我所有的应用程序,你的意思是?
  • 不,请看这个:dart.dev/codelabs/async-await
猜你喜欢
  • 2021-12-29
  • 1970-01-01
  • 2016-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多