작성
·
130
0
안녕하세요!
StatefulWidget Life Cycle 실습 -1 ~ 3 강의 중 문의드립니다.
ElevatedButton을 통해 CodeFactory Class의 보이기/안보이기 기능중에서 CodeFactoryWidget의 생성자가 없는데도 실행이 되는게 잘 이해가 되지 않아서요..
예를들면 GestureDetector의 위젯 안에는 child: CodeFactoryWidget 생성자가 있는 부분이 다른 부분 같아서요..
setState를 거치게 되면 HomeScreen에 포함되어 있는 Widget은 전부 재실행이 되는건가요 ?
답변 2
0
0
import 'package:flutter/material.dart';
class HomeScreen extends StatefulWidget {
const HomeScreen({super.key});
@override
State<HomeScreen> createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
bool show = false;
Color color = Colors.red;
@override
Widget build(BuildContext context) {
return Scaffold(
body: SizedBox(
width: double.infinity,
// height: 10,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
if (show)
GestureDetector(
onTap: () {
setState(() {
color = color == Colors.blue ? Colors.red : Colors.blue;
});
},
child: CodeFactoryWidget(
color: color,
),
),
SizedBox(height: 32.0),
ElevatedButton(
onPressed: () {
setState(() {
show = !show;
print('$show');
});
},
child: Text('í´ëŚí´ě ëł´ě´ę¸°/ěëł´ě´ę¸°'),
)
],
),
),
);
}
}
class CodeFactoryWidget extends StatefulWidget {
final Color color;
CodeFactoryWidget({
super.key,
required this.color,
}) {
print('1) Stateful Widget constructor');
}
@override
State<CodeFactoryWidget> createState() {
print('2) Stateful Widget Create State');
return _CodeFactoryWidgetState();
}
}
class _CodeFactoryWidgetState extends State<CodeFactoryWidget> {
@override
void initState() {
print('3) Stateful Widget initState');
super.initState();
}
@override
void didChangeDependencies() {
print('4) Stateful Widget didChageDependencies');
super.didChangeDependencies();
}
// dirty
@override
Widget build(BuildContext context) {
print('5) Stateful Widget build');
return Container(
color: widget.color,
width: 50.0,
height: 50.0,
);
}
// clean
@override
void deactivate() {
print('6) Stateful Widget deactivate');
super.deactivate();
}
@override
void dispose() {
print('7) Stateful Widget dispose');
super.dispose();
}
}
서툰건 괜찮습니다. 초보때는 당연한거죠. 저는 질문을 정확히 파악하고 정확한 답변을 해드리고싶을뿐입니다!
아직도 정확히는 이해 못하겠어서 조금 더 소통 해봐요!
말씀하신 부분이 혹시 아래 스크린샷 부분 맞을까요?
"생성자가 없다"라고 생각하시는게 어떤 이유때문인지를 파악하고 있는데 프로그래밍상 생성자는 위 스크린샷이 맞습니다.
어떤 위치에 생성자가 없다고 생각하시는건지 말씀주시면 제가 더 자세히 설명 드리도록 할게요!
감사합니다!