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'),
),
),
);
}
}
'new' 카테고리의 다른 글
Flutter에서 SingleTickerProviderMixin 사용 이유 (0) | 2024.03.11 |
---|---|
Dart의 읽기 전용 getter (0) | 2024.03.11 |
Flutter 앱 라이프 사이클 관리: WidgetsBinding, WidgetsBindingObserver, didChangeAppLifecycleState() (0) | 2024.03.07 |
Dart Mixin: 코드 재사용을 위한 강력한 도구 (0) | 2024.03.07 |
Flutter App Lifecycle 이해하기: AppLifecycleState enum (0) | 2024.03.07 |