[Flutter] didChangeAppLifecycleState를 사용해야 할 때

myming·2023년 11월 24일
0

didChangeAppLifecycleState이란 무엇인가?

앱 라이프사이클을 감지하여 어떠한 동작을 수행해야 할 경우 사용하는 함수입니다.

사용한 이유

VisibilityDetector를 래핑하여 IndexedStack과 같은 재빌드가 없는 경우에는 다시 해당 화면으로 돌아왔는지 탐지할 수 있지만 나갔다가 들어오거나(resumed 상태) 네이티브 화면에 다녀올 때의 옵저빙이 필요했으나, 해당 위젯이 탐지하지 않았습니다.

사용 방법

WidgetsBindingObserver 믹스인을 사용하여 didChangeAppLifecycleState를 오버라이드 해주고 실제 구현체를 구현하여 사용하면 됩니다. 저는 resumed 감지만 필요하여 사용하였으나 더 많은 상태도 감지해주니 구현이 필요한 작업에 맞는 상태일 경우 사용하시면 됩니다. 예시는 GetxController 사용 예제이지만, 사용하는 상태관리 컨트롤러 init, close 방식에 따라 옵저버를 추가해주고 제거해주면 됩니다.


class TestController extends GetxController with WidgetsBindingObserver {

	
	void onInit() {
		super.onInit();
		// 앱 라이프사이클 파악을 위한 옵저버를 추가합니다.
		WidgetsBinding.instance.addObserver(this);
	}

	
	void onClose() {
		// 앱 라이프사이클 파악을 위한 옵저버를 제거합니다.
		WidgetsBinding.instance.removeObserver(this);
		super.onClose();
	}


void didChangeAppLifecycleState(AppLifecycleState state) {
	switch (state) {
		case AppLifecycleState.resumed:
			_onRefresh();
		}
		// resumed 상태만 사용하므로 나머지는 break 합니다.
		default:
			break;
		}
	}
}
profile
플러터로 개발하는걸 가장 선호합니다.

0개의 댓글