① 배운 것
1.
pageview에서 페이지를 이동할때마다 그 페이지의 initstate가 새로 불린다면 각 페이지에 AutomaticKeepAliveClientMixin을 넣어보자. AutomaticKeepAliveClientMixin은 자동으로 State 객체를 활성 상태로 유지하여 위젯 트리가 변경될 때도 State 객체가 재빌드되지 않도록 도와줍니다.
주의사항 : AutomaticKeepAliveClientMixin은 wantKeepAlive가 true인 경우에도 시스템 메모리가 부족하면 State 객체를 파괴할 수 있습니다.
AutomaticKeepAliveClientMixin을 사용하면 State 객체가 메모리에 더 오래 유지되므로, 필요한 경우에만 사용하는 것이 좋습니다.
https://velog.io/@nagosooo/240708-TIL이때는 리스트뷰에서 스크롤을 해도 각 아이템 상태를 유지하기 위해 (아이템에서 버튼을 클릭했다 등..) 사용하였다.
안드로이드에서 특정 페이지에서 디바이스 뒤로가기 버튼을 클릭 했을때 뒤로가기가 되는게 아니라 앱이 꺼지는 현상이 나타나서 찾아봄. (같은 페이지에서 화면에 구현된 pop 버튼을 클릭하면 pop이 잘 작동하였고 ios에서는 스와이프 제스쳐를 사용해도 잘 작동하였다.)
OnBackInvokedCallback은 Android 13 이상에서 도입된 기능으로, 앱이 사용자의 뒤로가기 버튼 조작을 미리 감지하고 제어할 수 있도록 합니다. (뒤로가기 버튼을 누를때 어떤 행동을 하고 싶다..등)
기존에는 시스템이 직접 뒤로가기 동작을 처리했지만, 이 기능을 통해 앱 개발자에게 더 많은 제어 권한을 부여합니다.
Flutter 앱에서 OnBackInvokedCallback
Flutter 앱에서 OnBackInvokedCallback은 AndroidManifest.xml 파일의 enableOnBackInvokedCallback 속성을 통해 활성화됩니다.
enableOnBackInvokedCallback이 true로 설정되면:OnBackInvokedCallback을 호출합니다.OnBackInvokedCallback에서 뒤로가기 동작을 직접 처리해야 합니다. (예: 특정 작업 수행, 뒤로가기 동작 무시 등)enableOnBackInvokedCallback이 false로 설정되면:주의 사항
enableOnBackInvokedCallback을 true로 설정하고 OnBackInvokedCallback을 제대로 처리하지 않으면 앱이 종료될 수 있습니다.OnBackInvokedCallback은 Android 13 이상에서만 작동합니다.요약
OnBackInvokedCallback은 Android 13 이상에서 앱이 뒤로가기 동작을 세밀하게 제어할 수 있도록 하는 강력한 기능입니다.
하지만 이 기능을 사용하려면 앱이 직접 뒤로가기 동작을 처리해야 하므로 주의가 필요합니다.
일반적인 경우에는 enableOnBackInvokedCallback을 false로 설정하고 Flutter 프레임워크가 뒤로가기 동작을 처리하도록 하는 것이 좋습니다.
관련 스택오버플로우1
관련 스택오버플로우2
② 회고 (restropective)
③ 개선을 위한 방법