flutter BuildContext

2023. 7. 16. 17:50IT

1) BuildContext : widget tree에서 현재 widget의 위치를 알 수 있는 정보

 

buil메소드는 widget타입이고, 인자값은 BuildContext 타입의 context 이며

retrun값으로 scaffold라는  widget을 반환한다.

 

context는 widget tree상에서 어디에 위치하는지 알려주는 context라는 것을 인자로 하여 scaffold로 반환

 

2) BuildContext : stateless위젯이나 state빌드 메서드에 의해서 리턴 된 위젯의 부모가 된다. 

 

Stateless타입의 커스텀위젯인  MyPage 자신만의 BuildContext 타입의 context를 가진다.

build메서드를 통해 scaffold widget을 반환했고, 이때 scaffold widget은 부모인 MyPage의 context를 그대로 물려봤는다는 의미임

만약 widget tree상에서 scaffold widget의 위치가 필요하다면, 어떻게 해야할까?

scaffold widget 하위에 빌드메소드를 생성하면 된다.

 

Scaffold.of(context) method :  현재 주어진 context에서 위로 올라가면서 가장 가까운 Scaffold를 찾아서 반환하라

 

단축키 정의

vsc에서 file > preperences > keyboard shortchuts

 

스낵바에서 사용하는 Scaffold.of(context) 메소드는 Scaffold의 위치를 알려주는 context를 알아야 사용 가능하나,

위 코드의 context는 MyPage의 context(위젯 트리상의 위치)이므로 에러 발생

해결방안은 

위젯 트리상에서 scaffold보다 하위에 존재하는 위젯에서 context를 사용하게 하면,

거슬러올라가면서 scaffold의 위젯을 찾을 수 있음. Builder 메소드를 정의해서 사용하면 됨

 

 Scaffold.of(ctx) 메소드가 위젯트리상에서 scaffold 위젯의 위치를 알 수 있게 되었다.

https://www.youtube.com/watch?v=-zxGPfjiQQA&list=PLQt_pzi-LLfpcRFhWMywTePfZ2aPapvyl&index=19

반응형