PageView를 사용하거나 DefaultTabController를 사용하여 화면을 표시해주는 경우에,
위젯 자체가 다른 화면으로 바뀌는 순간에 'dispose'가 되어 사라지게 된다.
총 A, B, C화면이 있을 때 A→B →C로 넘어갔다가 다시 A←B ←C로 페이지를 스크롤 했을때,
각 리스트들이 유지되었으면 좋겠을 때, 다음과 같이 설정해준다.
State<T>를 상속한 클래스에 AutomaticKeepAliveClientMixin을 추가한다.
해당 mixin은 StatefulWidget에서 사용이 가능하다.
class _ExamplePageListState extends State<ExamplePageList> with AutomaticKeepAliveClientMixin {
그럼, _ExamplePageListState에 빨간줄이 그어질 것이다.
반드시 재정의가 필요한 함수가 있기 때문이다.
wantKeepAlive라는 함수이며, 'true'로 설정해주어야 위젯이 재선언이 되지 않는다.
(반대로, 'false'로 선언하면 이전과 같이 위젯이 reload된다.)
@override
bool get wantKeepAlive => true;
해당 위젯을 선언한 부모 위젯이 dispose되지 않는 이상 계속해서 유지된다.
감사합니다🥫