참고 영상: https://youtu.be/CD1Y2DmL5JM?t=5689
StatelessWidget 으로는 ui 를 변경할 수 없고
StatefulWidget 을 써야한다.
setState(() {
//
});
setState 를 호출하면 상태변경을 시도하는데 이때 다시 Build() 함수가 호출된다.
내가 삽질한 부분은
class _YellowBirdState extends State<YellowBird> {
int count = 0;
String label = "start";
@override
Widget build(BuildContext context) {
// 이거 실수
// count = 0;
// label = "start";
return MaterialApp(
theme: ThemeData.dark(),
home: Scaffold(
appBar: AppBar(title: Center(child: Text("title"))),
body: Column(
children: [
ElevatedButton(
onPressed: () {
setState(() {
count++;
label = "count: $count";
print("setState $label");
});
},
child: Text(
"button",
style: TextStyle(fontSize: 50, color: Colors.white),
),
),
Text(
label,
style: TextStyle(fontSize: 99, color: Colors.white),
),
],
),
),
);
}
}
이거 실수
부분을 보시면 setState 이후 다시 ui 를 그리기위해 Build() 가 호출되는데 여기다 변수를 초기화 했더니 매번 변수가 초기화 되서 아무 변화가 없었다는 것 ...
그래서 주석처리 했더니 잘 되더라 ..
시간낭비를 심하게 해서 글 적어봅니다.