flutter - 从Flutter中的Sharedpreferences获取语言

标签 flutter dart sharedpreferences

我想将当前语言保存在变量中,以便在其他页面中使用它。我正在使用带有flutter_translate的shared_preferences。

在我的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<Locale>'
我如何管理它以获得getPreferredLocale()的值并将其存储在变量中?

谢谢

最佳答案

final Future<String> futureValue = Future.value("Hello !");

中打印 future 值同步
void main() {
  futureValue.then((value) => print(value)); // Hello !
}

中打印 future 值异步
void main() async {
  final value = await futureValue;
  print(value); // Hello !
}

关于flutter - 从Flutter中的Sharedpreferences获取语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60450415/

相关文章:

java - 离开 android 中的 Activity 后如何保留 ListView ?

使用 SharedPreferences 的 Android 小部件配置

flutter - 在 Dart 中如何在一个列表中添加多个列表?

android - 在之前由 android 构建的其他构建 apk 上通过 flutter 在 Play Store 上更新 apk 构建

firebase - Flutter/Dart- 'List<DropdownMenuItem<dynamic>>'类型不是'List <DropdownMenuItem <String >>类型的子类型

ios - firebase_messaging 版本 3.0.0 无法使用 IOS 构建

dart - 无法使用 stdout.write 方法,但可以使用 stdout.writeln

postgresql - 使用 dart 和 postgresql 按查询排序

xcode - 如何解决Flutter iOS Build缺少的必需文件

android - SharedPreferences.commit 失败,出现 java.io.IOException : No space left on device