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