Flutter table_calendar ๋ผ์ด๋ธ๋ฌ๋ฆฌ
table_calendar๋?
๋ ์ง ์ ํ ๊ธฐ๋ฅ์ด ์๋ ์ฑ ๋ง๋ค ๋ ์ฌ์ฉํ๋ Flutter ๋ฌ๋ ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ฑ์์ ๋ง์ด ์ฌ์ฉํ๋ ๊ธฐ๋ฅ:
โข
์ผ์ ๊ด๋ฆฌ ์ฑ
โข
์ผ๊ธฐ์ฅ ์ฑ
โข
์ถ์ ์ฒดํฌ ์ฑ
โข
์์ฝ ์ฑ
โข
Todo ๋ฌ๋ ฅ
์ค์น ๋ฐฉ๋ฒ
pubspec.yaml
dependencies:
table_calendar: ^3.0.0
YAML
๋ณต์ฌ
import
import 'package:table_calendar/table_calendar.dart';
Dart
๋ณต์ฌ
๊ธฐ๋ณธ ๋ฌ๋ ฅ ๋ง๋ค๊ธฐ
๊ฐ์ฅ ๊ธฐ๋ณธ ์ฝ๋
TableCalendar(
firstDay: DateTime.utc(2020, 1, 1),
lastDay: DateTime.utc(2030, 12, 31),
focusedDay: DateTime.now(),
)
Dart
๋ณต์ฌ
๋ฌ๋ ฅ ํ์ ์์ฑ 3๊ฐ
์์ฑ | ์ค๋ช
|
firstDay | ๋ฌ๋ ฅ ์์ ๋ ์ง |
lastDay | ๋ฌ๋ ฅ ๋ ๋ ์ง |
focusedDay | ํ์ฌ ํ์ ๋ ์ง |
๋ ์ง ์ ํ ๊ธฐ๋ฅ ๋ง๋ค๊ธฐ (์ค์)
๋ฌ๋ ฅ์์ ๋ ์ง ํด๋ฆญ ๊ธฐ๋ฅ
DateTime _selectedDay = DateTime.now();
DateTime _focusedDay = DateTime.now();
Dart
๋ณต์ฌ
TableCalendar(
firstDay: DateTime.utc(2020, 1, 1),
lastDay: DateTime.utc(2030, 12, 31),
focusedDay: _focusedDay,
selectedDayPredicate: (day) {
return isSameDay(_selectedDay, day);
},
onDaySelected: (selectedDay, focusedDay) {
setState(() {
_selectedDay = selectedDay;
_focusedDay = focusedDay;
});
},
)
Dart
๋ณต์ฌ
๋์ ํ๋ฆ
๋ ์ง ํด๋ฆญ
โ
onDaySelected ์คํ
โ
selectedDay ๋ณ๊ฒฝ
โ
๋ฌ๋ ฅ UI ์
๋ฐ์ดํธ
Plain Text
๋ณต์ฌ
Flutter State ๊ด๋ฆฌ ์ฐ์ต์ ๋งค์ฐ ์ข๋ค.
์ผ์ (Event) ํ์ํ๊ธฐ
๋ฌ๋ ฅ ์๋์ ์ผ์ ํ์ ๊ธฐ๋ฅ ๋ง๋ค ์ ์์.
์ด๋ฒคํธ ๋ฐ์ดํฐ ์์
Map<DateTime, List<String>> events = {
DateTime(2026, 3, 26): ['์ด๋', '๊ณต๋ถ'],
DateTime(2026, 3, 27): ['ํ์'],
};
Dart
๋ณต์ฌ
์ด๋ฒคํธ ๊ฐ์ ธ์ค๋ ํจ์
List<String> getEventsForDay(DateTime day) {
return events[day] ?? [];
}
Dart
๋ณต์ฌ
๋ฌ๋ ฅ์ ์ด๋ฒคํธ ์ฐ๊ฒฐ
TableCalendar(
firstDay: DateTime.utc(2020, 1, 1),
lastDay: DateTime.utc(2030, 12, 31),
focusedDay: _focusedDay,
eventLoader: getEventsForDay,
)
Dart
๋ณต์ฌ
์ด๋ ๊ฒ ํ๋ฉด ๋ฌ๋ ฅ ๋ ์ง ์๋ ์ (dot)์ด ํ์๋๋ค.
๋ฌ๋ ฅ + ListView ์ผ์ ํ์
์ผ๋ฐ์ ์ผ๋ก ๋ง์ด ๋ง๋๋ ๊ตฌ์กฐ
TableCalendar
โ
์ ํ๋ ๋ ์ง ์ผ์
โ
ListView
Plain Text
๋ณต์ฌ
์์ ๊ตฌ์กฐ
Column(
children: [
TableCalendar(...),
Expanded(
child: ListView(
children: getEventsForDay(_selectedDay)
.map((event) => ListTile(title: Text(event)))
.toList(),
),
)
],
)
Dart
๋ณต์ฌ
์ด ๊ตฌ์กฐ ์ง์ง ๋ง์ด ์ฌ์ฉํ๋ค.
๋ง์ด ๋ง๋๋ ์ฑ ์์
table_calendar ์ฌ์ฉํ๋ ์ฑ
์ฑ | ์ค๋ช
|
์ผ๊ธฐ์ฅ ์ฑ | ๋ ์ง๋ณ ์ผ๊ธฐ |
Todo ์ฑ | ๋ ์ง๋ณ ํ ์ผ |
์ถ์ ์ฑ | ์ถ์ ์ฒดํฌ |
์์ฝ ์ฑ | ์์ฝ ๋ ์ง ์ ํ |
๊ณต๋ถ ๊ธฐ๋ก ์ฑ | ๊ณต๋ถ ๊ธฐ๋ก |
๋ฌ๋ ฅ ์ฑ ๊ตฌ์กฐ (์ค์)
Flutter ๋ฌ๋ ฅ ์ฑ ๊ธฐ๋ณธ ๊ตฌ์กฐ
Calendar ํ๋ฉด
โ
๋ ์ง ์ ํ
โ
ํด๋น ๋ ์ง ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ
โ
ListView ํ์
โ
์ถ๊ฐ / ์ญ์ / ์์
Plain Text
๋ณต์ฌ
์ด ๊ตฌ์กฐ๋
โข
์ผ์ ์ฑ
โข
์ผ๊ธฐ ์ฑ
โข
Todo ์ฑ
์ ๋ถ ๋์ผํ ๊ตฌ์กฐ์ด๋ค.
์ ๋ฆฌ
table_calendar ํต์ฌ ์์ฑ 5๊ฐ
์์ฑ | ์ค๋ช
|
firstDay | ์์ ๋ ์ง |
lastDay | ๋ ๋ ์ง |
focusedDay | ํ์ฌ ๋ฌ |
selectedDayPredicate | ์ ํ ๋ ์ง ํ์ |
onDaySelected | ๋ ์ง ํด๋ฆญ ์ด๋ฒคํธ |
table_calendar๋ Flutter์์ ๋ฌ๋ ฅ UI์ ๋ ์ง ์ ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
Flutter ์ฑ ํ๋ก์ ํธ ์ถ์ฒ
์์
ํ๋ก์ ํธ ์ถ์ฒ ์กฐํฉ
ํ๋ก์ ํธ | ์ฌ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ |
์ผ๊ธฐ์ฅ ์ฑ | table_calendar + path_provider |
Todo ๋ฌ๋ ฅ | table_calendar |
์ถ์ ์ฒดํฌ ์ฑ | table_calendar + shared_preferences |
๋น๋ฐ ์ผ์ ์ฑ | table_calendar + SQLite |
์์ฝ ์ฑ | table_calendar + Firebase |







