"Do not use BuildContexts across async gaps" 에러를 만났다!

테디준·2022년 11월 17일
2
_getTimeFromUser({required bool isStartTime}) async {
    var pickedTime = await _showTimePicker();
    String _formatedTime = pickedTime.format(context);
    if (pickedTime == null) {
      print("Time canceled");
    } else if (isStartTime == true) {
      startTime = _formatedTime;
    } else if (isStartTime == false) {
      endTime = _formatedTime;
    }
  }

TimePicker를 사용하기 위해 위와 같은 코드를 작성했다. 그런데 async-await를 붙인 순간 "Do not use BuildContexts across async gaps" 에러 메시지가 표시됐다.

StackOverFlow를 찾아보니 "if (!mounted) return;"을 context를 사용한 부분 앞에 붙여주어야 한다고 나왔다. 왜냐하면 위젯이 마운트되지 않으면 async뒤에 context를 썼을 때 그 안에 아무런 값도 들어있지 않을 수 있어서다.

0개의 댓글