Optimize calendar loading with parallel API calls

- Replace sequential API calls with Future.wait() for parallel execution
- Reduces calendar load time from ~31 sequential requests to 1 parallel batch
This commit is contained in:
m3mo 2026-02-03 18:27:43 +01:00
parent fbccd5b7d9
commit db0c5337ed

View File

@ -36,11 +36,21 @@ class _CalendarPageState extends State<CalendarPage> {
final lastDay = DateTime(_focusedMonth.year, _focusedMonth.month + 1, 0); final lastDay = DateTime(_focusedMonth.year, _focusedMonth.month + 1, 0);
for (int day = 1; day <= lastDay.day; day++) { // Create all date requests
final date = DateTime(_focusedMonth.year, _focusedMonth.month, day); final dates = List.generate(
final dateStr = DateFormat('yyyy-MM-dd').format(date); lastDay.day,
final result = await repository.getTasksByDate(date); (index) => DateTime(_focusedMonth.year, _focusedMonth.month, index + 1),
result.when( );
// Execute all API calls in parallel
final results = await Future.wait(
dates.map((date) => repository.getTasksByDate(date)),
);
// Process results
for (int i = 0; i < dates.length; i++) {
final dateStr = DateFormat('yyyy-MM-dd').format(dates[i]);
results[i].when(
success: (data) { success: (data) {
if (data.isNotEmpty) { if (data.isNotEmpty) {
tasks[dateStr] = data; tasks[dateStr] = data;