글로벌키는 메모리에 많은 부하를 주기 때문에 꼭 필요한 경우 아니면 사용하면 안된다.
1.1. 글로벌키 지정
final Map<String, GlobalKey> _categoryKeys = {};
void _initializeCategoryKeys() {
for (var category in detailStoreMenu['menuCategories']) {
_categoryKeys[category['classification']] = GlobalKey();
}
}
GlobalKey
초기화의 필요성GlobalKey
를 꼭 초기화해야 하는지 여부는 애플리케이션의 특정 요구사항과 설계에 달려 있습니다. GlobalKey
는 다음과 같은 경우에 유용하게 사용됩니다:
GlobalKey
를 사용하면 위젯의 위치가 변하더라도 상태를 유지할 수 있습니다. 이는 동적인 UI에서 매우 유용합니다.GlobalKey
를 초기화하지 않고 사용하려 하면, 해당 키를 요구하는 로직에서 문제가 발생할 수 있습니다. 예를 들어, 특정 위젯에 접근하려 할 때 GlobalKey
가 없다면 찾지 못하는 에러가 발생할 수 있습니다. 또한, 키를 통해 특정 동작을 제어하거나 상태를 관리하고자 할 때, 적절한 GlobalKey
없이는 이를 수행할 수 없습니다.
1.2. 글로벌키 저장
ListView.builder(
controller: _scrollController,
physics: const ClampingScrollPhysics(),
shrinkWrap: true,
itemCount: int.parse(widget.detailStoreMenu['titleCount']),
itemBuilder: (context, index) {
var categoryTitle =
widget.detailStoreMenu['menuCategories'][index]['classification'];
return Column(
key: widget.categoryKeys[categoryTitle],
children: [
위와 같이 필요한 부분에서 key: widget.categoryKeys[categoryTitle], 저장을 하게 된다면
_categoryKeys = { "음료": GlobalKey(), "디저트": GlobalKey() };
이런식으로 저장이 된다.