반응형
플러터에서 UniqueKey()는 위젯 트리에서 위젯을 식별하고 상태를 유지하는 데 사용되는 고유 식별자를 제공하는 클래스입니다.
각 UniqueKey() 인스턴스는 고유하며 다른 UniqueKey() 인스턴스와 같지 않습니다.
이 블로그 게시물에서는 UniqueKey()의 기본 사용 방법과 사용 가능한 다양한 옵션을 살펴봅니다.
UniqueKey() 사용 방법
UniqueKey()를 사용하려면 다음과 같이 새 인스턴스를 만들 수 있습니다.
UniqueKey();
또는 ValueKey 클래스의 생성자에 값을 전달하여 UniqueKey()를 만들 수도 있습니다.
이는 위젯을 식별하는 데 사용할 수 있는 값을 제공하는 데 유용합니다.
UniqueKey(value: 'my_unique_key');
UniqueKey() 사용 예제
다음은 UniqueKey()를 사용하는 몇 가지 예제입니다.
1. Stateful 위젯의 상태 유지
UniqueKey()를 사용하여 StatefulWidget의 인스턴스를 식별하고 상태를 유지할 수 있습니다.
이는 위젯이 새로 만들어지더라도 이전 상태에 액세스할 수 있도록 하기 때문입니다.
class MyStatefulWidget extends StatefulWidget {
@override
_MyStatefulWidgetState createState() => _MyStatefulWidgetState();
}
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
int _counter = 0;
@override
Widget build(BuildContext context) {
return KeyedSubtree(
key: UniqueKey(),
child: Column(
children: <Widget>[
Text('Counter: $_counter'),
ElevatedButton(
onPressed: () {
setState(() {
_counter++;
});
},
child: Text('Increment'),
),
],
),
);
}
}
2. ListView에서 위젯 식별
UniqueKey()를 사용하여 ListView에서 위젯을 식별할 수 있습니다.
이는 위젯이 새로 만들어지더라도 목록에서 위젯의 위치를 유지하는 데 유용합니다.
class MyListView extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: 100,
itemBuilder: (context, index) {
return KeyedSubtree(
key: UniqueKey(value: index),
child: ListTile(
title: Text('Item $index'),
),
);
},
);
}
}
UniqueKey() 옵션
UniqueKey()에는 다음과 같은 옵션이 있습니다.
- value: UniqueKey()와 연결된 값을 지정합니다. 이 값은 위젯을 식별하는 데 사용할 수 있습니다.
- debugLabel: 디버깅 목적으로 UniqueKey()에 레이블을 지정합니다.
주의 사항
- UniqueKey()는 위젯을 새로 만들 때마다 새로 생성됩니다. 따라서 BuildContext 내에서 UniqueKey()를 만들면 위젯이 매번 다시 빌드됩니다. 이를 방지하려면 위젯의 initState() 메서드 또는 생성자에서 UniqueKey()를 만들어야 합니다.
- UniqueKey()는 자체적으로 위젯 상태를 유지하지 않습니다. 위젯 상태를 유지하려면 StatefulWidget를 사용해야 합니다.
결론
UniqueKey()는 플러터에서 위젯을 식별하고 상태를 유지하는 데 유용한 도구입니다.
위에서 설명한 예제와 옵션을 참조하여 자신의 프로젝트에서 UniqueKey()를 사용하는 방법을 알아보세요.
반응형
'Flutter > Flutter Programming' 카테고리의 다른 글
플러터와 퓨시아 OS: 둘 사이의 밀접한 관계 (0) | 2024.07.11 |
---|---|
플러터에서 Dismissible 위젯 사용 방법과 옵션 (0) | 2024.07.11 |
플러터에서 showModalBottomSheet를 키보드가 올라오면서 가리는 경우 해결방법 (0) | 2024.07.10 |
플러터에서 showModalBottomSheet() 위젯 사용법 및 옵션 가이드 (0) | 2024.07.10 |
플러터 초보를 위한 Share 패키지 완전 가이드: 간편하게 공유하기 (0) | 2024.07.09 |