이번 포스트는 GetX에서의 이슈: 773에 대해 다뤄보려고 한다.
해당 이슈는 iOS에서 특정 상황에 제스쳐를 통해 페이지를 종료하는 경우에만 발생하는 에러이다.
특정 상황은 다음과 같다.
SnackBar
가 화면에 존재할 때해결하는 방법은 이슈에도 적어뒀듯이 다음과 같다.
snackbarStatus
의 사용Get.snackbar(
title,
content,
snackbarStatus: (_) {
if (_ == SnackbarStatus.CLOSED || _ == SnackbarStatus.CLOSING) {
WidgetsBinding.instance.addPostFrameCallback((_) {
final dismissController = Get.find<DismissNavigationController>();
if (dismissController.isDismiss) Get.back();
dismissController.setDone();
});
}
},
DismissNavigationController
생성class DismissNavigationController extends GetxController {
bool _dismiss = false;
bool get isDismiss => _dismiss;
setDismiss() => _dismiss = true;
setDone() => _dismiss = false;
}
NavigatorObserver
생성class DismissNavigationObserver extends NavigatorObserver {
void didStartUserGesture(Route route, Route previousRoute) {
Get.find<DismissNavigationController>().setDismiss();
super.didStartUserGesture(route, previousRoute);
}
void didPush(Route<dynamic> route, Route<dynamic> previousRoute) {
print('[did Push] ${Get.isSnackbarOpen}');
Get.find<DismissNavigationController>().setDone();
}
}
GetMaterialApp(
navigatorObservers: [
DismissNavigationObserver(),
],
....