본문 바로가기
new

Flutter의 GlobalKey란?

by ftbd 2024. 3. 11.

1. GlobalKey란 무엇인가?

GlobalKey는 Flutter에서 전체 앱에서 고유한 위젯을 식별하는 데 사용되는 클래스입니다. 위젯 트리 전체에서 보존해야 하는 위젯의 상태를 유지하는 것이 목적입니다.

 

 

2. 상태 보존

  • GlobalKey는 위젯 상태를 보존하는 데 중요한 역할을 하며, 특히 위젯 재구축 전반에 걸쳐 상태를 유지해야 하는 시나리오에서 더욱 그렇습니다.
  • 위젯에 GlobalKey를 할당하면 위젯을 다시 빌드하더라도 해당 상태에 액세스하고 조작할 수 있습니다.

 

3. 액세스 가능한 곳

GlobalKey 를 사용하면 앱 어느곳에서나 위젯에 액세스 가능하다.

  • 앱의 다른 부분에서 위젯의 상태나 기능에 액세스해야 하는 경우 유용하다.

 

4. 고유성

GlobalKey는 앱 전체에서 고유한 ID를 제공합니다. 즉, 두 개의 위젯이 동일한 GlobalKey를 가질 수 없습니다.

 

 

5. 주의점

  • 성능 영향: GlobalKey는 앱 성능에 영향을 미칠 수 있습니다. 불필요하게 사용하지 않도록 주의해야 합니다.
  • 메모리 누수: GlobalKey는 메모리 누수를 발생시킬 수 있습니다. 사용하지 않는 GlobalKey는 dispose() 메소드를 호출하여 해제해야 합니다.

 

6. 예시 구현 코드

다음은 간단한 예시입니다.

class MyHomePage extends StatefulWidget {
  final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  void showSnackBar() {
    _scaffoldKey.currentState.showSnackBar(
      SnackBar(
        content: Text('Hello, world!'),
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      key: _scaffoldKey,
      appBar: AppBar(
        title: Text('GlobalKey Example'),
      ),
      body: Center(
        child: RaisedButton(
          onPressed: showSnackBar,
          child: Text('Show SnackBar'),
        ),
      ),
    );
  }
}