Flutter기초 개인과제_To Do App만들기_2

주혜림·2025년 12월 23일

251223 화요일 TIL

오늘은 모닝스터디에서 'StatefulWidget' 에 대해서 공부하였다!
동적인 위젯을 어떻게 만들까 고민해봐야겠다.
오늘 과제를 다 끝마쳐야 하는데... 시간을 오래 투자하는 것 보다도 이해가 잘 되어야 효율적으로 끝낼 수 있다!

🌈 To Do App만들기

[ 어려운 점 ]

  • Class를 별도로 만들고, 파일로 분리 후, 각 widjet을 homePage파일에 변수를 불러오고 싶은데
    아직 '파일을 타고 올라와서 적용 시키는' 메커니즘에 대한 것이 헷갈려서 많이 헤매고 있다.

[ 나아진 점 ]

  • 큰 구조 아래에서 작은 구조로 쪼개서 나아가고, 각 요소에 필요한 함수를 적용하고 기본적인 UI화면을 구성하는 것은 다소 이해가 되었다.

[ 오늘 할 일 ]
최대한 필수기능구현 부분까지는 과제를 완수해야 한다!!!

  • StatefulWidget 이해하기
  • 플로팅 버튼 적용해서 동작할 수 있게 하기
  • To Do 추가하는 화면 만들기
  • To Do가 추가 된 화면 만들기

[ 조건 ]
addTodo 함수를 이용


🌳 4. 트러블 슈팅

🔽 [ 상황 발생 ]
homePage에서 크게 appBar, body, button 영역을 따로 Class를 분리해주고, 파일을 만들어서 변수를 불러와 적용시키는 중인데
ListView부분을 TaskListView로 Class를 만들고 파일로 분리해서 변수명을 주고 homePage로 불러오려니 적용이 되질 않는다.


🔽 [ 원인 분석 ]
왜 이런 상황이 생겼을까?
String타입의 파라미터를 가져올 수 없어서 오류가 생겼다고 한다.
처음에 '변수명'이 문제라고 잘못 착각을 했다.

'body: TaskListView(widgets: widget.title),'
이라고 값을 줬으면 정상적으로 출력이 되었을거라 생각한다.

어떻게 대응하면 좋을까?
'타입'을 변경해서 적용하면 되는걸까?


🔽 [ 해결 방안 ]

TaskListView의 변수를 받는 '타입'을 'HomePage'로 변경해 주었더니 빨간줄이 뜨는건 사라졌다.
하지만,
만약 타입을 HomePage로 줬다면, 그것은 "부모 위젯 객체 전체를 통째로 넘겨받겠다"는 뜻이다.

장점: widgets.title 뿐만 아니라 HomePage가 가지고 있는 다른 모든 속성(데이터, 함수 등)에 접근할 수 있다.

단점: TaskListView라는 위젯이 오직 HomePage에서만 쓰일 수 있게 "종속"되어 버린다. 재사용하기 힘들어짐

또 다시 변수명이 잘못되었다고 착각해서 수정을 잘못 하는 바람에 '타입'을 'homepage'라고 변경을 해버린 탓에 부모 위젯에 종속이 되어버린 것이었다.


🔽 [ 결과 ]
문제 해결
TaskListView를 받는 타입과 변수를 'String title'로 변경한 뒤,
homePage의 body에 적용시켰더니 역시 정상적으로 출력되었고,
원하는 방향으로 코드가 수정이 되었다.
헷갈리는 것 같아서 TaskListView의 변수명을 'title3'로 바꿔주었다.


변수명 변경 적용

처음에 TaskListView의 변수명이 문제라고 잘못 착각을 한 부분에
위에서 HomePage클래스에서
'body: TaskListView(widgets: widget.title),'
이라고 값을 줬으면 정상적으로 출력이 되었을거라 생각한다.


🔽 [ 배운점 ]
🌱
1. String을 쓰는게 가장 좋은 것이다.
단순히 코드가 동작만 하면 해결되는 것이 아니다.
'재사용성'이 떨어진다는 점을 생각하지는 못했다!

앱 개발에서 중요한 것은 '안정성'과 '사용성'인데 사용성이 떨어지지 않게 코드를 짜야되는 것을 늘 염두에 두어야겠다.
🌱
2. 기초를 탄탄히. 매개변수에서 '타입' 과 '변수명'이 무엇인지
무엇을 뜻하는건지, 어떻게 동작이 되는건지 이해해야만 내가 원하는 기능도 구현하며 사용할 수 있다.


🔽 [ 느낀점 ]
단순히 변수의 개념을 헷갈렸을 뿐이지만 '재사용'의 중요성까지 배울 수 있게 되어서 실수를 통해 스스로 배운게 더 많아졌단 생각이 들었다.


🔽 [ 나만의 코드 ]
나중에 구현해보고 싶은 기능

To Do 리스트에 시간을 체크할 수 있는 기능도 한번 포함해보고 싶다!
final과 const의 공통점과 차이점을 다시 한번 개념을 복습하면서 든 생각이다.
둘 다 변하지 않는 상수를 가지는건 맞지만 const는 이미 정해져 있는 것, final은 출력하기 전 까지 수정이 가능하다.
대략 앱이 실행되면서 딱 그 시간이 출력되는 기능의 구현은 final이라고 생각하면 된다.

어렵고 헷갈렸던 개념들을 다시 이해하면서 새로 기능까지 구현해 본다면 정말 많은 공부가 될 것 같다!


profile
앱 개발을 공부중입니다.

0개의 댓글