Как сохранить состояние CupertinoSegmentedControl для интернационализации? - PullRequest
0 голосов
/ 14 февраля 2020

В настоящее время я использую интернационализацию по этой ссылке: https://medium.com/flutter-community/flutter-internationalization-the-easy-way-using-provider-and-json-c47caa4212b2

Но вместо этого я заменяю кнопки на CupertinoSegmentedControl.

enter image description here

Проблема в том, что сегмент теряет состояние, когда я покидаю страницу.

Я пытался использовать AutomaticKeepAliveClientMixin, но все еще не работал.

Любой ответ будет цениться!

1 Ответ

0 голосов
/ 20 февраля 2020

Все просто, вам нужно сохранить / восстановить значения, дать 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,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...