Key

08 Sep 2024  Khlee  1 min read.

플러터 강좌를 보고 정리한 내용입니다.

Key

  1. 위젯의 State를 보존
  2. 위젯이나 요소들을 유니크하게 식별

Stateful Widget의 경우 해당 위젯의 state 정보가 State 객체에 저장이 된다. State 객체는 위젯 tree를 기준으로 자신의 state를 해당 위젯에 적용하는데, 위젯의 순서가 바뀌거나 삭제가 되는 등 위젯 tree 상의 변화가 있을 경우 기존 위젯 tree 상의 순서를 따르기 때문에 이 변화를 제대로 반영하지 못하게 된다. key는 이를 해결할 수 있는 것으로, 각각의 위젯마다 유니크한 키 값을 부여함으로써 위젯의 순서가 바뀌거나 삭제가 되어 위젯 tree 상의 변화가 있을 때에도 State 객체가 올바른 위젯에 자신의 state를 적용할 수 있게 해 준다.

  1. Flutter는 기본적으로 위젯의 타입으로 위젯 tree 상에서 각 위젯을 식별
  2. Stateful 위젯의 식별을 위해서는 Key가 필요
  3. Value key는 value 값을 가지는 Stateful 위젯에 사용(TextField 같은)

Global key

Global key는 전체 앱 안에서 유일한 키다. Global key를 사용하면 다른 곳에서 한 위젯의 state 정보를 참조할 수 있다. 따라서 위젯 밖에서 그 위젯의 State에 선언된 함수나 변수를 참조할 수 있게 된다.

다음과 같이 ScaffoldMessenger도 사용할 수 있다.

final rootScaffoldKey = GlobalKey<ScaffoldMessengerState>();

// ...

  Widget build(BuildContext context) {
    return MaterialApp(
      scaffoldMessengerKey: rootScaffoldKey,
      // ...
    );
  }

khlee
khlee