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:
parent
fbccd5b7d9
commit
db0c5337ed
@ -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;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user