【问题标题】:How to maintain the state of CupertinoSegmentedControl for Internationalization?如何维护 CupertinoSegmentedControl 的状态以实现国际化?
【发布时间】:2020-02-13 21:39:03
【问题描述】:

我目前正在通过此链接使用国际化: https://medium.com/flutter-community/flutter-internationalization-the-easy-way-using-provider-and-json-c47caa4212b2

但我将按钮改为 CupertinoSegmentedControl。

问题是当我离开页面时,段不断丢失状态。

我尝试过使用AutomaticKeepAliveClientMixin,但还是不行。

任何答案将不胜感激!

【问题讨论】:

  • 失去状态是什么意思?当您选择 Bahasa 时,它们会恢复为英语?
  • @MiguelRuivo 是的,你找到我了!
  • 你需要从shared_prefs之类的东西中保存/检索值
  • @MohamedSayed 看来你是对的,谢谢!

标签: flutter dart flutter-cupertino


【解决方案1】:

很简单,你需要保存/恢复值,试试shared_prefs

我会使用我的插件localize_and_translate

这是一个简单的实现

  1. 您使用将返回语言代码的方法获取活动语言代码:例如en

    translator.currentLanguage();

2.您保存到shared_prefs,如下所示

import 'package:shared_preferences/shared_preferences.dart';

SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('code', translator.currentLanguage());

3。像在你的小部件树中一样检索

prefs.getString('code') == 'en' ? // widget for true : // widget for false,

或者你可以直接使用我的插件,不用shared_prefs

translator.currentLanguage() == 'en' ? // widget for true : // widget for false,

【讨论】:

  • 感谢您的回答,但我仍在努力创建逻辑以根据检测到的语言环境将值保存在 shared_prefs 中,并将其显示在 CupertinoSegmentedControl 的 groupValue 上。你能详细说明一下更具体的实现吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-13
  • 1970-01-01
  • 1970-01-01
  • 2017-02-03
  • 1970-01-01
相关资源
最近更新 更多