onPopInvoked is deprecated.

rO_Or·2024년 10월 22일

Dart 그리고 Flutter

목록 보기
19/19

플러터를 최신 버전으로 업그레이드하면서,
context.pop()이 잘 되던 페이지에서 오류가 발생했다.

그 이유는 안드로이드에서 뒤로가기 키를 감지하려고 쓴 PopScope 위젯가 이유였다.

업그레이드 하기 전에는

PopScope(
	canPop: false, // 페이지를 pop시킬 건지
    onPopInvoked: (didPop) {
        // pop을 감지했을 때의 로직 작성
        context.pop();
      },
    child: Container(),
);

이런 식으로 페이지 이동을 막고 로직을 작성한 다음 context.pop()을 호출하는 식으로 처리했었는데

업그레이드 후에는

// ...
PopScope(
	canPop: false, // 페이지를 pop시킬 건지
    onPopInvokedWithResult: (didPop, result) {
    	if(!didPop) {
       	// 로직 작성
           context.pop();
       }
     },
   child: Container(),
);

onPopInvoked가 depreacted가 됐고, onPopInvokedWithResult로 변경되었으며,
작동 방식이 바뀌었다.

Object? result인 새로운 인자를 받게 되는데 아마 context.pop('text');에서의
'text'를 받아오는 게 아닐까 싶다.

canPop에 false 상태로 context.pop();을 호출해서 ` is not a true`라는 오류가 나왔던 것이다.~~

나중에 다시 해보니, 됐던 방법이 안 돼서 다시 고생한 결과

if(!didPop)으로 분기를 나눠준 뒤 페이지 이동시켜야 오류가 발생하지 않았다.

변경 로그를 읽어야겠다... 귀찮지만

profile
즐거워지고 싶다.

0개의 댓글