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되지 않는 이상 계속해서 유지된다.
감사합니다🥫
'dev > flutter' 카테고리의 다른 글
[Flutter] Firebase등록 (0) | 2024.08.15 |
---|---|
[Flutter] 라이브러리 만들기 #패키지 #Package #Plugin (0) | 2024.08.01 |
[Flutter] 페이지 애니메이션(PageRouteBuilder) #Navigator Animation #AnimatePage (0) | 2024.07.30 |
[Flutter] 이미지(Image), 이미지 로딩 모션 만들기 #Image #Image.memory #Image.network #frameBuilder #errorBuilder (2) | 2024.07.23 |
[Flutter] StatefulWidget이 아닌 곳에서 setState를 사용하여 상태관리를 하고 싶은 경우 #Stateless #setState (2) | 2024.07.22 |