[Flutter] 'WillPopScope' is deprecated and shouldn't be used. Use PopScope instead. This feature was deprecated after v3.12.0-1.0.pre.

hodu·2024년 2월 15일
0

Flutter

목록 보기
26/30

Flutter, Dart 버전을 마이그레이션 하면서 일부 Widget의 변화가 있었습니다.

그 중, 가장 크게 눈에 띄었던 것은 WillPopScope 였습니다.

WillPopScope 과 같이 보여지며, 아래의 메시지를 보여주었습니다.

'WillPopScope' is deprecated and shouldn't be used. Use PopScope instead. This feature was deprecated after v3.12.0-1.0.pre.

어떠한 이유로 더 이상 사용하지 않도록 변경을 했는지에 대한 설명은 공식문서에 표기되어 있지 않지만,

추측하건대, API의 일관성과 명확성을 높이기 위함과
새로운 위젯으로 기존 위젯보다 더 많은 기능을 제공하거나, 기존 문제를 해결할 수 있다는 기능적 개선이라는 점에서

PopScope 는 WillPopScope의 기능을 포함하면서도 추가적인 이점이 있을 수 있습니다.

마이그레이션한 버전은 아래와 같습니다.

  • Before
Flutter v 3.10.6
Dart v 3.0.6
DevTool v 2.23.1
  • After
Flutter v 3.16.8
Dart v 3.2.5
DevTool v 2.28.5

위의 메시지와 같이, 이제는 WillPopScope를 PopScope로 대체하여 사용해야 합니다.

  • Before
WillPopScope(
  onWillPop: () async {
    // 뒤로 가기 버튼을 눌렀을 때의 로직
    return true; // 또는 false;
  },
  child: Scaffold(
    // ...
  ),
);
  • After
PopScope(
 canPop: false,	// onPopInvoked가 작동하기 위해선 false 되어야 합니다.
 onPopInvoked: (didPop) async {
  if (didPop) {
    return;
  }
  // 뒤로 가기 버튼을 눌렀을 때의 로직
},




참고 문서:
https://stackoverflow.com/questions/77529904/willpopscope-is-deprecated-in-flutter

profile
Flutter developer

0개의 댓글