Как предотвратить Stateful Widget, хранящийся в Списке, для удаления? - PullRequest
0 голосов
/ 09 апреля 2020

Позвольте мне начать с объяснения проблемы. У меня есть несколько кнопок, которые создаются на основе данных, которые я получаю с сервера. При каждом нажатии кнопки мне нужно создать и отобразить виджет, который представит мне некоторые данные (этот виджет также создается динамически). Состояние этого виджета должно сохраняться в течение всего времени жизни приложения. (например, если я нажимаю другую кнопку и показываю другой виджет, мне нужно иметь возможность нажать на первую кнопку и показать первый виджет в его сохраненном состоянии). Количество кнопок также можно изменить в течение срока службы приложения.

Я попытался использовать IndexedStack для достижения этой цели, но когда количество кнопок изменилось, мне нужно добавить «страницы» в IndexedStack, поэтому мне нужно воссоздать новый IndexedStack, который будет иметь некоторые из моих старых виджетов, поэтому Я вытаскиваю виджеты из списка или создаю новые, если это необходимо. Это прекрасно работает, за исключением того, что Flutter вызывает метод dispose () для моих виджетов, которые хранятся в списке. Я пытался использовать AutomaticKeepAliveClientMixIn, но это не помогло.

Я предполагаю, что это как-то связано с тем, что виджеты отсоединяются от родителя, но когда я снова присоединяю их к новому родителю (новый индексированный стек), Flutter не понимает этого должным образом.

Есть идеи?

1 Ответ

0 голосов
/ 09 апреля 2020

Попробуйте сохранить данные в локальном хранилище или sqlite для постоянных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...