[Flutter] Don't use 'BuildContext's across async gaps

Angela Jeong·2024년 3월 24일
0

Flutter Troubleshooting

목록 보기
10/19

showDialog를 사용하기 위해 아래처럼 코드를 작성했다. 문제 없이 동작은 하지만 노란색 밑줄이 생기며 Don't use 'BuildContext's across async gaps 라는 경고가 떴다.

비동기에서는 BuildContext 를 바로 쓰지 말고, BuildContext를 안전하게 참조할 수 있게 작성해야 하기 때문이다.

문제가 되었던 코드

final List<BooksModel> result =
    await widget.updateBookData();
if (result.isNotEmpty) {
 await showDialog(
  context: context,
  builder: (BuildContext context) => Dialog(

방법을 찾아보니 간단하게 if(mounted)를 붙이면 된다고 하는데 난 여전히 해결이 되지 않았다. .! 블로그를 참고하니 Flutter 3.7 이상에서는 if (context.mounted)로 작성해야 한다고 한다. (mounted 라는 프로퍼티가 BuildContext 로 옮겨갔기 때문이다.)

해결된 코드

final List<BooksModel> result =
    await widget.updateBookData();
if (context. mounted && result.isNotEmpty) {
 await showDialog(
  context: context,
  builder: (BuildContext context) => Dialog(

참고: https://seorenn.github.io/note/flutter-buildcontext-in-async-func.html

0개의 댓글