Search
Duplicate

table_calendar

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