본문 바로가기
Flutter/Flutter Programming

플러터에서 UniqueKey() 사용 방법

by Maccrey 2024. 7. 11.
반응형

플러터에서 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()를 사용하는 방법을 알아보세요.

 

 

 

 

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 

 

나비일기장 [수발일기장] - Google Play 앱

수형자 수발가족및 수발인을 위한 일기장으로 수형생활시기에 따른 정보를 얻을 수 있습니다.

play.google.com

 

반응형