[Flutter] BuildContext

leeyoung·2022년 9월 20일

Flutter

목록 보기
2/4
  • BuildContext: 위젯에 대한 정보

  • 보통 사용하는 방식은

    class ExampleWidget extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold ();
      }
    }
  • StatelessWidget이든 StatefulWidget이든 build 함수를 구현하는데 거기서 context를 얻어와서 사용한다.

  • 지금 까지는 그냥 위젯의 정보. 위젯트리의 어느 위치에 있는지 알기 위한 정보 이렇게만 알고 있었다.
    근데 점차 저 context를 잘못 넘겨주고 받고 사용해서 에러가 발생했고 그러면 아예 회색화면이 뜨고 crash나는 경우가 발생했다.

  • Widget build(BuildContext context)에서의 context는 ExampleWidget의 context이다. 그러니까 Scaffold의 위쪽 context이다.

  • 그래서 build 함수 내부에서 Scaffold.of(context).~ 이런식으로 Scaffold의 정보를 가져오려고 하면 에러가 난다.
    (참고: .of 함수는 현재 위젯 기준으로 위쪽 방향으로 가장 가까운 위젯을 찾는 함수이다. Scaffold.of(context)라고 했을 때 context 기준 가장 가까운 Scaffold를 가져온다)

  • context는 Scaffold 부모의 context이므로 Scaffol의 정보를 가지고 있지 않다.

  • 만약 Scaffold.of(context)를 사용하고 싶다면 builer를 사용하여 context를 새로 생성해주자.

참고

0개의 댓글