-
Notifications
You must be signed in to change notification settings - Fork 2
/
[add] 4주차 박시형 과제 제출
49 lines (34 loc) · 3.45 KB
/
[add] 4주차 박시형 과제 제출
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 4주차 과제
## 1번 문제
**`StatefulWidget`** 와 **`StatelessWidget`** 의 주요 차이점은 무엇인가요?
``
### 1번 답변
한 줄 요약: StatefulWidget은 동적인 상태를 가지며 변경될 때 화면을 다시 그리는 데 사용됨
- 데이터가 변경될 때 이 변화를 UI에 반영하여 실시간으로 보고 싶을 때 사용하는 게 Stateful Widget
- Stateful Widget은 상태를 가지고 있어서 Stateful이라 하며 상태에 따라 변하게 될 데이터를 생각할 수 있음.
- Stateful Widget은 두 개의 부분으로 나뉨. 첫번째 부분은 상태가 없는 위젯 그 자체, 두 번째 부분은 위젯의 상태로 위젯의 state는 위젯에 들어갈 데이터와 UI를 넣는 곳
- 장점: 데이터가 변경되면 해당 위젯의 UI도 변경됨
- State(상태)를 가질 수 있는 위젯입니다. State(상태)란 위젯의 속성이나 데이터가 변경될 때 변경 사항을 반영하는 데 사용되는 정보를 말함.
- StatefulWidget은 State 클래스와 함께 사용되며 이 클래스는 위젯의 상태를 저장하고 관리하는 역할을 함.
- State(상태)가 변경되면 setState 메서드를 호출하여 해당 상태가 변경되었음을 Flutter에 알린다. 이후 Flutter는 상태 변경을 감지하고 화면을 다시 그리게 된다.
- 주로 동적인 데이터를 표시하거나 사용자 상호 작용을 처리하는 데 사용된다.
한 줄 요약: StatelessWidget은 변경 불가능한 상태를 가지며 정적인 콘텐츠를 표시하는 데 사용됨
- Stateless의 의미: 아무런 데이터를 가지고 있지 않다, 유일한 일은 그저 UI를 보여주는 것
- Stateless Widget은 build 메서드를 통해서 단지 UI를 출력할 뿐임.
- StatelessWidget은 상태를 가지지 않는 위젯임.
- 한 번 생성되면 그 상태를 변경할 수 없으며, 변경 불가능한(immutable) 속성을 가짐.
- StatelessWidget은 빠르게 화면을 그릴 때 주로 사용됨.
- 상태 변화가 필요하지 않은 정적인 콘텐츠를 표시할 때 유용함.
- 한 번 생성된 후에는 변경할 수 없으므로 상태를 가지고 있지 않기 때문에 setState를 호출할 필요가 없음.
## 2번 문제
**`StatefulWidget`** 에서 State의 상태가 변경되면 어떤 일이 발생하며, 왜 setState가 필요한가요?
### 2번 답변
State(상태)가 변경되면 setState 메서드를 호출하여 해당 상태가 변경되었음을 Flutter에 알린 뒤 Flutter는 상태 변경을 감지하고 화면을 다시 그린다.
- 여기서 setState는 State클래스에게 데이터가 변경되었다고 알리는 함수이다.
- setState를 사용해서 State에게 State야 너한테 새로운 데이터가 있다고 말해줌 -> 그래서 State가 반응해서 뭔가를 하고 스스로 새로고침하라고 알림
- 만약 setState 함수를 호출하지 않는다면 build 메서드는 다시 실행되지 않음. Flutter에게 새로운 데이터가 왔다고 알려줘야 UI를 빨리 새로고침한다.
## 3번 제출!
강의 chapter 3 을 에러가 나지 않도록 Widget의 크기를 조절한 후,
시뮬레이터나 자신의 핸드폰에서 실행한 앱을 캡처해서 올려주세요!
![image](https://github.com/GDSC-Hanyang/2023-App-Study/assets/144704798/f3950bd2-fd1c-4659-af96-1744a0d25919)
그리고 자신이 작성한 flutter 파일의 lib 폴더를 github 자신의 이름에 해당하는 폴더에 upload 해주시면 됩니다