Widget을 업데이트 할 경우 setState(() {}) 를 사용하면 되는데, setState()는 전체 Widget을 초기화하고, build 메쏘드를 호출해 전체 Widget을 다시 생성하게 된다. 특정 Widget만 초기화 하려면 별도의 publisher와 Widget을 사용해야 한다.
ValueNotifier<Type>
값의 변화를 퍼블리싱하는 객체
ValueNotifier<bool> _isSignIn = ValueNotifier(false);
ValueListenableBuilder
ValueNotifier 의 값이 변경되면 builder 에 정의한 메쏘드가 호출된다.
위의 bool 값에 따라 버튼을 활성화, 비활성화 하는 경우 아래와 같이 구성된다.
@override
Widget build(BuildContext context) {
return ValueListenableBuilder(
valueListenable: _isSignIn,
builder: (context, value, child) {
if (value == false) {
return ElevatedButton(
child: const Text('Button'),
onPressed: null,
);
}
return ElevatedButton(
child: const Text('Button'),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => OtherWidget()),
);
},
);
}
);
'프로그래밍 > Flutter' 카테고리의 다른 글
[flutter] Plugin UIView 사용하기 (0) | 2023.04.04 |
---|---|
[flutter] iOS plugin 에서 local framework 설정 (0) | 2023.03.30 |
[flutter] 플러그인 프로젝트 구현 절차 (0) | 2023.03.29 |
[flutter] 플러그인 프로젝트 자동 생성 요소 (0) | 2023.03.23 |
[flutter] iOS 기본 모듈 구성 방식 (0) | 2023.03.22 |