리액트와 마찬가지로 플러터의 state를 변경하기 위해서는
setState() 를 사용한다
class _MyAppState extends State<MyApp> {
// This widget is the root of your application.
int counter = 0;
void onClicked() {
setState(() {
counter = counter + 1;
});
}
}
setState 의 콜백 안에서 변경할 값을 변경해주면 된다
setState를 통해 상태가 변경되면
해당 상태를 가지고 있는 flutter 위젯의 build 메소드가
다시 실행된다
사실 setState는 그냥 build 메소드를 한 번 더 실행하는 것이고
데이터 변경은 setState() 이전에 해주면 된다
하지만 가독성이 좋기 위해 변경되는 상태를 set 함수 안에 넣어주는 편이 좋다
리액트보다 원하는 시기에 화면을 업데이트 해주기 훨씬 편하고
명확한 것 같다
리액트에서 했다면 ref 에 데이터를 넣고
조건문으로 계속 확인하면서 원하는 시점에 setState(ref.current)
이런 식으로 작성 했을 텐데..
리렌더링 시점을 좀 더 자유롭게 가져갈 수 있다
자유도가 높다는 것은 더 많은 실수를 야기할 수 있으니
항상 주의해야 한다