Flutter로 To-Do 리스트 앱 개선하기: 캘린더 닫기 버튼 추가하기
2024. 12. 20. 12:11ㆍ같이 공부합시다 - Flutter/Flutter로 To-Do 앱 만들기
728x90
반응형
Flutter로 To-Do 리스트 앱을 개발하다 보면,
작은 변화로도 사용자가 더 편리하게
앱을 사용할 수 있게 만들 수 있어요.
이번 글에서는
캘린더 모달 창에 닫기 버튼을 추가하는 방법을 다룰게요.
이 기능은 간단하면서도 사용자 경험(UX)을
크게 향상시킬 수 있답니다. 😊

오늘 다룰 내용
- 왜 닫기 버튼이 필요할까요?
- 캘린더 닫기 버튼 구현 방법
- 사용성 개선 팁과 확장 아이디어
1. 왜 닫기 버튼이 필요할까요?
닫기 버튼이 있으면 사용자에게 이런 장점을 줄 수 있어요:
- 명확한 사용성: "어떻게 창을 닫지?" 하는 고민 없이 바로 버튼을 눌러 닫을 수 있어요.
- 일관된 디자인: 모든 모달 창에 닫기 버튼을 추가하면 앱 전체가 더 깔끔하고 통일감 있게 느껴집니다.
- 접근성 강화: 키보드나 화면 리더기를 사용하는 사용자도 쉽게 창을 닫을 수 있어요.
현재 앱에서는 모달 창을 닫으려면 창 바깥을 터치해야 해요.
이런 방식은 처음 사용하는 사용자에게는 약간 불편할 수 있답니다. 😅
2. 캘린더 닫기 버튼 구현 방법
그럼 실제로 닫기 버튼을 어떻게 추가하는지 살펴볼까요?
아래는 수정된 _showCalendar 메서드의 코드입니다.
수정된 _showCalendar 메서드
void _showCalendar() {
showModalBottomSheet(
context: context,
isScrollControlled: true,
builder: (context) {
return StatefulBuilder(
builder: (BuildContext context, StateSetter setModalState) {
return Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
// 닫기 버튼과 제목
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
const Text(
'캘린더',
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
),
),
IconButton(
icon: const Icon(Icons.close),
onPressed: () {
Navigator.of(context).pop(); // 모달 닫기
},
),
],
),
const Divider(),
// TableCalendar 추가
TableCalendar(
calendarBuilders: CalendarBuilders(
markerBuilder: (context, day, events) {
final eventList = _getEventsForDay(day);
if (eventList.isNotEmpty) {
return Positioned(
bottom: 1,
child: Container(
width: 8.0,
height: 8.0,
decoration: const BoxDecoration(
color: Colors.redAccent,
shape: BoxShape.circle,
),
),
);
}
return null;
},
),
focusedDay: _focusedDay,
firstDay: DateTime(2000),
lastDay: DateTime(2100),
calendarFormat: _calendarFormat,
onFormatChanged: (format) {
if (_calendarFormat != format) {
setModalState(() {
_calendarFormat = format;
});
setState(() {
_calendarFormat = format;
});
}
},
selectedDayPredicate: (day) => isSameDay(_selectedDay, day),
onDaySelected: (selectedDay, focusedDay) {
setState(() {
_selectedDay = selectedDay;
_focusedDay = focusedDay;
});
_showTasksForSelectedDay();
},
),
],
),
);
},
);
},
);
}
어떤 점이 달라졌을까요?
- 닫기 버튼 추가
- Row 위젯을 이용해 닫기 버튼과 제목을 한 줄에 배치했어요.
- 버튼을 누르면 Navigator.of(context).pop()으로 모달이 닫힙니다.
- 디자인 개선
- Divider로 닫기 버튼과 캘린더를 구분해서 UI가 깔끔해졌어요.
- 모달 크기 최소화
- mainAxisSize: MainAxisSize.min을 설정해서 화면에서 필요한 공간만 사용하도록 했어요.
3. 사용성 개선 팁과 확장 아이디어
이런 점이 더 좋아졌어요!
- 사용자에게 더 친절해졌어요.
- 닫기 버튼 덕분에 모달을 닫는 방법을 고민할 필요가 없어졌어요.
- 디자인이 일관돼요.
- 모달마다 닫기 버튼을 추가하면 앱 전체가 더 정돈된 느낌이 들어요.
이런 것도 시도해 볼 수 있어요
- 키보드 ESC 키 지원
- 키보드로도 모달을 닫을 수 있다면 더 편리할 거예요.
- 닫기 애니메이션 추가
- 닫기 버튼을 누를 때 부드러운 애니메이션 효과를 넣으면 UX가 더 좋아질 거예요.
- 디자인 다양화
- 닫기 버튼을 화면 하단에 배치하거나 다른 스타일로 꾸며볼 수도 있겠죠?
결론
캘린더 모달 창에 닫기 버튼을 추가해서
사용자 경험을 조금 더 편리하게 만들었어요.
이렇게 작은 변화가 실제로는 큰 차이를 만들 수 있답니다! 😊
앞으로도 이런 작은 개선을 쌓아가면서
더 완성도 높은 앱을 만들어 보겠습니다!
혹시 궁금한 점이나 의견이 있으면 댓글로 남겨주세요!
함께 더 나은 앱을 만들어 봅시다! 💡
바뀐 UI

추가된 코드 확인
728x90
반응형
'같이 공부합시다 - Flutter > Flutter로 To-Do 앱 만들기' 카테고리의 다른 글
Flutter로 To-Do 리스트 앱의 캘린더 이벤트 동기화 문제 해결하기 (앱 재실행 시 캘린더 일자에 마커 표시가 안되는 오류 개선) (3) | 2024.12.23 |
---|---|
Flutter로 To-Do 리스트 앱 개선하기: 캘린더에 이벤트 표시하기 (2) | 2024.12.23 |
Flutter UI 개선: TableCalendar에 2주 보기 옵션 넣는 방법 (0) | 2024.12.18 |
Flutter로 To-Do 리스트 앱에 캘린더 기능 추가하기 (TableCalendar 활용) (2) (0) | 2024.12.17 |
Flutter로 To-Do 리스트 앱에 캘린더 기능 추가하기 (TableCalendar 활용) (1) (0) | 2024.12.16 |