?
부모 위젯이 무엇인지를 알려주는 (담고있는) 변수이다.
print(context.findAncestorWidgetOfExactType<MaterialApp>())
>>> MaterailApp 출력됨
void main() {
runApp(
MaterialApp(
?
showDialog() 함수를 버튼에 집어넣어서 버튼을 누르면 창이 뜨는 기능을 구현해보고 있었는데, 이게 뜨지 않았다. 그 해결 방법으로는 Scaffold 위의 MaterialApp 함수를 Stateful위젯 바깥으로 끄집어내줘야 하는 것이었고 위처럼 main함수에 갖다 놓고 코드를 수정했더니 showDialog가 잘 동작했다. 필수 인자인 context값이 존재해야 하고, context가 가진 값은 부모위젯이니까 부모 위젯이 존재하려면 Material위젯을 바깥으로 빼야 했던 것이다.
!
다만 이렇게 레이아웃을 수정해주기 싫다면, 중간에 context를 생성해주는 위젯이 존재한다.
바로, Wrap with builder -> context 생성기다. 이를 통해 생성된 context에는 해당 위치 위의 부모들이 전부 담긴다. Scaffold, MaterialApp...
관련코드
context와 관련하여 생길 수 있는 기능 오류와 동작 원리에 대해서 알게 되었다.