Как сохранить состояние PageView, которое используется внутри ScreenTypeLayout? (Flutter Web) - PullRequest
0 голосов
/ 08 мая 2020

Я использую пакет под названием responseive_builder для создания адаптивного веб-интерфейса.

Моя проблема в том, что этот пакет перестраивает виджет, соответствующий ограничениям, после изменения размера окна.

Это приводит к потере пользовательских данных, например, при вставке в TextField. Также это приводит к тому, что PageView теряет свое состояние, что означает потерю индекса текущей страницы, если страница была изменена ранее перед настройкой размера окна.

Есть предложения?

1 Ответ

0 голосов
/ 09 мая 2020

У меня была очень похожая проблема с закрывающимся / открывающимся контейнером с текстовым полем.

Вам нужно использовать Shared Preferences для сохранения этих данных в памяти. Общие настройки эффективно сохраняет эти типизированные данные на карте, которая хранится в памяти и может использоваться в любое время.

Также я настоятельно рекомендую использовать Flutter Form Builder для ваших текстовых полей, поскольку он позволяет вам иметь начальное значение в вашем TextField и имеет встроенную проверку.

Потому что есть нет кода для отключения go, ваше текстовое поле должно выглядеть примерно так:

 SharedPreferences prefs = await SharedPreferences.getInstance();
 String firstName = '';

_persistantText(String value) async {
    firstName = await prefs.setString(value);
}

 FormBuilderTextField(
            attribute: "firstName",
            decoration: InputDecoration(labelText: "First Name"),
            validators: [
              FormBuilderValidators.required(),
              FormBuilderValidators.max(70),
            ],
            initialValue: firstName
            onChanged: (value){
                _persistantText(value);
            }
          ),
...