-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
24-25-APP-Assignment-06 최다연 #1
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
인스턴스와 객체의 차이를 이해하신 것 같네요! 해당 프로젝트에서는 객체는 Goal이고 Goal을 이용해 만든게 인스턴스에요 :) DB의 전체적인 흐름은 이해하신 것 같네요 ! validation 부분은 아래 comment 읽어보시고, 궁금한 거 있으시면 언제든 comment 달아주세요 ~ 선택 과제까지 수고많으셨습니다 😊
decoration: const InputDecoration(hintText: "목표 제목"), | ||
validator: (value) { | ||
if (value == null || value.isEmpty) { | ||
return '목표 제목'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
목표 제목으로 하신 이유가 있나요 ?? 위 코드 목표를 입력하세요
이런 식으로 처리하면 요소 특성이랑 더 맞을 것 같아요:)
content: Form( | ||
key: formKey, | ||
child: TextFormField( | ||
onChanged: (value) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
목표 수정 showDialog를
눌렀을 때, TextFormField
의 요소인 initialValue
를 변수로 지정한 title
로 지정해주면, 적어둔 코드가 초기값으로 설정돼요 😊
const Text('@choi-day', style: style25), | ||
const SizedBox(height: 15), | ||
const Text('Introduce Me,,,', style: style25), | ||
SizedBox( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ListView를 SizeBox로 감싼 이유를 좋을 것 같아요 ! 만약 저라면 Text와 ListView 사이에 SizeBox를 둘 것 같아요 !
//데이터를 불러옴 | ||
factory Goal.fromMap(Map<String, dynamic> map){ | ||
return Goal( | ||
id: map['id'] as int?, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
타입 캐스팅한 것 좋은 것 같아요 👍
); | ||
} | ||
|
||
static const TextStyle style18 = TextStyle(fontSize: 18.0, color: Colors.grey); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
const로 선언한 스타일들은 나중에 component와 같은 폴더를 만들어서 관리해도 좋아요 :)
Description
goal.dart
goal_database.dart
goal_app.dart
Goaldatabase객체의 database인스턴스와 goal객체를 담을 리스트를 선언하였습니다
database를 새로고침(?)하는 _loadGoals메서드를 작성하였습니다
_addGoal에서 showDialog를 사용하여 입력창을 띄웠습니다
_addGoal에서 TextFormField로 사용자에게서 입력을 받고 null이면 경고문을 띄우는 유효성 검사 코드를 작성하였습니다
_editGoal에서 _addGoal을 참고하여 화면에 보이는 Text일부를 수정하고 editGoal메서드를 이용하여 database를 수정하는 코드를 작성하였습니다
_myGoals 위젯을 외부에 정의하였고, ListView의 builder를 이용하여 goals 리스트를 화면에 띄웠습니다
_myGoals에서 IconButton을 이용하여 수정과 삭제 버튼을 만들었고 Row위젯으로 감싸 두 버튼을 가로로 배치하였습니다.
지난번 코드 리뷰를 받고 TextStyle을 따로 상수로 선언하여 코드를 간결하게 수정하였습니다
전체적으로 의미 없는 sizedBox는 삭제하고 간단한 위젯은 한줄로 작성하여 간결하게 수정하였습니다(이부분은 gpt의 도움을 조금 받았습니다...)
메인 화면
입력 전 화면
유효성 검사 화면
추가 완료 화면
수정 화면
수정 완료 화면
Important content
Question
Reference