Есть ли способ сохранить состояние дочернего виджета с отслеживанием состояния?

Привет, ребята, я новичок в этой вещи, но, пожалуйста, есть ли способ сохранить состояние виджета с отслеживанием состояния вместо того, чтобы перестраивать виджет каждый раз, когда он вызывается

- Допустим, у меня есть 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

Другие вопросы по тегам