티스토리 뷰

반응형

유튜브에서 본 코드를 따라서 사용하다가, scaffoldKey를 생성하던데, 이걸 어디다 쓰는지 모르겠다. 

 var scaffoldKey = GlobalKey<ScaffoldState>();

이렇게 선언하고 있는데, 전역(scaffold 아래의 어느 위젯에서든)으로 scaffold의 state를 쉽게 참조 할 수 있게 해주는 듯해보이다. 하지만 정확하게 이해하기 위해 구글링을 더 해보았다. 

https://stackoverflow.com/questions/68993864/scaffold-key-what-the-purpose-is-and-where-it-is-used

 

Scaffold key - what the purpose is and where it is used

What is scaffoldKey what the purpose is and where it is used? final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>(); return Scaffold( key:

stackoverflow.com

위의 질문자도 나랑 같은 부분이 궁금했나보다. 그런데 제대로 된 답변이 아직 안달려있다. 

 

Scaffold.of( ) 를 사용하는 대신  GlobalKey의 curretState 메소드를 이용해서 ScaffoldState를 얻을 수 있기에, 덜 우아하지만 더 편리한 방법이라고 한다.

 

그렇다면 GlobalKey는 뭐하는 놈이냐~!! 찾아보자.  

https://nsinc.tistory.com/214

 

[Flutter] Key란 무엇인가?

기본적으로 플러터의 위젯은 생성자에서 Key매개변수를 받을 수 있습니다. 하지만 그렇게 많이 사용되지는 않습니다. 위젯이 위젯트리에서 위치를 변경하더라도 Key는 상태정보를 유지합니다.

nsinc.tistory.com

위의 블로그 글에서 맨아래부분에 가면 GlobalKey에 대한 정보가 있다. 그리고 위의 블로그 글은 아래의 미디엄에 게재된 원문을 해석한 글이다. 

https://medium.com/flutter/keys-what-are-they-good-for-13cb51742e7d

 

Keys! What are they good for?

The key parameter can be found on basically every widget constructor, but their use is less common. Keys preserve state when widgets move…

medium.com

 

GlobalKey는 2가지 사용목적이 있습니다. 첫 번째는 위젯이 상태를 잃지 않으면서 부모를 바꿀 수 있도록 해줍니다. 두 번째는 특정 위젯의 정보를 완전히 다른 위젯트리에서 접근가능하게 해줄 수 있습니다. 첫번째 목적에 대한 예시로는, 서로 다른 2개의 화면에서 동일한 위젯을 동일한 상태를 유지하면서 보여주어야 할 때 GlobalKey를 사용하게 됩니다. 두번째의 경우에는 비밀번호는 검사하고 싶은데 해당 상태 정보를 트리의 다른 위젯과 공유하고 싶지 않을 때 사용할 수 있습니다. GlobalKey는 테스트를 진행할 때도 유용하게 사용됩니다. GlobalKey를 사용하여 특정 위젯과 그 상태정보를 추적하고 테스트할 수 있습니다.
항상 그런건 아니지만 GlobalKey는 전역 변수와 유사한 면이 있습니다. 대게는 상태를 공유하고 조회할 수 있는 더 나은 방법이 있습니다. 예를들어 InheritedWidget을 사용하거나 또는 Redux나 BLoC 패턴을 이용하는 것이 있습니다.

라고 한다. 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함