Есть ли способ сохранить состояние дочернего виджета с отслеживанием состояния?
Привет, ребята, я новичок в этой вещи, но, пожалуйста, есть ли способ сохранить состояние виджета с отслеживанием состояния вместо того, чтобы перестраивать виджет каждый раз, когда он вызывается
- Допустим, у меня есть PageView в качестве моей домашней страницы, а все его дочерние элементы - это виджеты с отслеживанием состояния... и при пролистывании страницы я хочу, чтобы он создавал дочерний элемент в списке один раз, а не перестраивал при каждом изменении страницы
- Вот мой код,
!!!
return PageView(
onPageChanged: (cardIndex) {},
scrollDirection: Axis.horizontal,
children: <Widget>[
ChatPage(),
UploadPage(),
NotifyPage(),
Settings()
]
);
...Спасибо
1 ответ
Вы можете использовать класс миксина под названием AutomaticKeepAliveClientMixin
в вашем классе State и переопределите wantKeepAlive
метод и возврат true
.
Пример:
class ChatPage extends StatefulWidget{
@override
_ChatPageState createState() => _ChatPageState();
}
class _ChatPageState extends State<ChatPage> with
AutomaticKeepAliveClientMixin<ChatPage> {
@override
bool get wantKeepAlive => true; // <- override this method
@override
Widget build(BuildContext context) {
return ....
}
}
Для получения дополнительной информации вы можете обратиться к этой статье, которая реализует постоянные панели вкладок в Flutter https://medium.com/@diegoveloper/flutter-persistent-tab-bars-a26220d322bc