Flutter - ValueNotifier with ValueListenableBuilder

Routine·2023년 7월 21일
0

Flutter

목록 보기
2/7

ValueNotifier

단일 값(single value) 변경 알림 class 로 value 가 == 연산자로 계산되며,
이전 value 값과 같이 않을경우 리스너에 알린다. 이러한 사항 때문에 value 가
변경 가능한 데이터 타입일 경우 리스너에 알리지 않는다.
때문에 만약 데이터 타입이 변경될 수 있을 경우 ChangeNotifier 를 사용하는것이 좋다.

ValueListenableBuilder

ValueListenable 가 리스너로 등록되어, 값이 변경 될때마다 업데이트 된 값으로 builder 를 호출하는 위젯이다.

이제 위의 ValueNotifier, ValueListenableBuilder 를 이용하여
변경 되지 않는 데이터 타입이며, 단일 값으로 간단한 상태 관리가 필요한 경우 사용하기 좋다.


아래는 위의 예제와 같이 이해를 위해 간단하게 작성한 코드이다.
예제 코드는 링크를 참고바란다.


// ValueNotifier
final ValueNotifier<int> testValue = ValueNotifier<int>(0);

// testValue Change
testValueChange() => testValue.value = testValue.value+1;


Widget build(BuildContext context) {
	return 
    ...
	TextButton(
		// testValue 값 변경.
		onPressed: testValueChange,
		child: Text('ValueNotifier Increase'
	),
	...

	ValueListenableBuilder(
        // testValue 를 리스너로 등록
		valueListenable: testValue,
        // testValue 가 변경될때마다 build 함수 실행.
		builder: (BuildContext context, value, Widget? child) {
			return Text(
				'ValueListenableBuilder ValueNotifier : $value',
				style: Theme.of(context).textTheme.bodyMedium,
			);
		},
	),
} 

0개의 댓글