작성
·
44
답변 2
0
안녕하세요!
부모 위젯에서 제공해주는 기능입니다 (부모 위젯에 대한 정보는 제 Dart 언어 강의 참고 부탁드립니다)
StatelessWidget의 경우 부모 위젯에서 BuildContext를 제공해주지 않습니다. 그래서 함수에서 꼭 받아서 전달해야하지만. StatefulWidget의 경우 부모위젯에서 클래스 프로퍼티로 제공해줘서 사용 할 수 있습니다.
감사합니다!
0
안녕하세요, 인프런 AI 인턴입니다. wegaia님.
showCupertinoDialog
에서 사용되는 context
가 어디서 유래된 것인지 궁금하신 것 같습니다. Flutter에서는 BuildContext
라는 개념이 매우 중요합니다. BuildContext
는 위젯 트리 안에서 위젯의 위치를 나타내며, 위젯 트리의 부모-자식 관계를 이해하고 관리하는 데 사용됩니다.
OnHeartPressed
함수가 선언된 동일한 클래스나 위젯 내에서 context
가 선언된 경우, 보통은 위젯의 생성자나 메서드를 통해 해당 BuildContext
가 전달되었을 가능성이 큽니다. 일반적으로 다음과 같은 상황에서 context
를 사용할 수 있습니다:
StatefulWidget
이나 StatelessWidget
의 build
메서드에서 context
가 주어지는 경우.State
클래스에서 widget
속성을 통해 상위 위젯의 BuildContext
에 접근하는 경우.아마도 OnHeartPressed
함수는 build
메서드나 위젯 트리 내에서 호출되기 때문에, 해당 위치에서 BuildContext
가 전달되고 있을 가능성이 큽니다.
이를 더 명확히 설명하기 위해서는 실제 코드 구조를 살펴봐야 할 필요가 있습니다. 그러나 일반적인 경우에, 위젯 트리의 구조 덕분에 BuildContext
가 전달된다고 볼 수 있습니다.
유사한 질문이 게시판에 있었던 것 같습니다. “U&I onPressed 질문”에서 비슷한 맥락으로 함수와 context에 대한 논의가 이루어졌습니다. 확인해보시면 도움이 될 것 같습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
섹션 19, Navigator 사용해서 네이게이션 해보기 항목에 설명이 나와 있네요.
StatefulWiget 객체 내에서는 BuildContext 객체가 전역함수로 선언되어 있어서 각 함수 내에서 접근 가능하다는군요.
Stateless 객체 내에서는 불가능하답니다.
그래서 Build 함수 내에서 함수 호출시에 context 객체를 넘겨줘야 한다네요.
어휴, 늦은 밤에 질문한것도 죄송한데 곧바로 긴 답변까지 주셨네요.
그래도 제가 좀 띨띨해서 조금 헷갈려서 제가 제대로 이해한건지 좀만 더 질문드려볼게요.
말씀하신걸로 유추해보면 build 메서드 내에서 _Top() 클래스(위젯)의 생성자의 OnPressed 매개변수로 OnHeartPressed가 지정이 되었으니 그 위젯 트리 내에서 호출이 되는것이므로 명시적으로 Buildcontext가 OnHeartPressed함수의 매개변수로 전달되진 않지만 컴파일러는 암묵적으로 BuildContext 타입의 객체인 context 를 처리할 수 있다는 말씀처럼 들립니다. 제가 말하고도 헷갈리네요.
어쨋든 늦은밤에 감사합니다.
유사한 질문이라고 하신 "U&I onPressed 질문"에선 콜백함수를 지정하는것과 콜백함수가 가리키는 함수를 실행하는 것에 대한 차이에 대한 질문인 것 같습니다.