feat(app): offline-кэш на остальных экранах — фаза 5
accounts, cashflow, categories, goals, income, portfolio (+instrument), rebalance, tax, rules переведены на Cached<T> по контракту docs/ai/offline-cache.md. Общие/второстепенные селекторы (scopesProvider, categoriesListProvider и т.п.) оставлены как есть — не основной контент экрана. sync_page.dart и settings_page.dart не тронуты (первый — заменён health-page отдельно, второй — чистые действия без списка для баннера).
This commit is contained in:
@@ -29,30 +29,33 @@ class IncomeCalendarTab extends ConsumerWidget {
|
||||
child: AsyncValueView(
|
||||
value: calendar,
|
||||
onRetry: () => ref.invalidate(incomeCalendarProvider),
|
||||
data: (data) => ListView(
|
||||
padding: const EdgeInsets.all(16),
|
||||
children: [
|
||||
const _CalendarControls(),
|
||||
const SizedBox(height: 12),
|
||||
_Totals(data: data),
|
||||
const SizedBox(height: 16),
|
||||
if (data.entries.isEmpty)
|
||||
const Padding(
|
||||
padding: EdgeInsets.only(top: 48),
|
||||
child: EmptyState(
|
||||
icon: Icons.event_available_outlined,
|
||||
message: 'Ожидаемых выплат в этом окне нет.\n'
|
||||
'Либо по бумагам нет объявленных выплат и истории, либо портфель пуст.',
|
||||
),
|
||||
)
|
||||
else
|
||||
for (final group in _groupByMonth(data.entries))
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(bottom: 12),
|
||||
child: _MonthCard(month: group.key, entries: group.value),
|
||||
),
|
||||
],
|
||||
),
|
||||
data: (cached) {
|
||||
final data = cached.data;
|
||||
return ListView(
|
||||
padding: const EdgeInsets.all(16),
|
||||
children: [
|
||||
const _CalendarControls(),
|
||||
const SizedBox(height: 12),
|
||||
_Totals(data: data),
|
||||
const SizedBox(height: 16),
|
||||
if (data.entries.isEmpty)
|
||||
const Padding(
|
||||
padding: EdgeInsets.only(top: 48),
|
||||
child: EmptyState(
|
||||
icon: Icons.event_available_outlined,
|
||||
message: 'Ожидаемых выплат в этом окне нет.\n'
|
||||
'Либо по бумагам нет объявленных выплат и истории, либо портфель пуст.',
|
||||
),
|
||||
)
|
||||
else
|
||||
for (final group in _groupByMonth(data.entries))
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(bottom: 12),
|
||||
child: _MonthCard(month: group.key, entries: group.value),
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user