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:
@@ -35,7 +35,7 @@ class HoldingsTab extends ConsumerWidget {
|
||||
AsyncValueView(
|
||||
value: summary,
|
||||
onRetry: () => ref.invalidate(portfolioSummaryProvider),
|
||||
data: (s) => _SummaryTiles(summary: s),
|
||||
data: (cached) => _SummaryTiles(summary: cached.data),
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
_Card(
|
||||
@@ -43,9 +43,9 @@ class HoldingsTab extends ConsumerWidget {
|
||||
child: AsyncValueView(
|
||||
value: series,
|
||||
onRetry: () => ref.invalidate(valueSeriesProvider),
|
||||
data: (rows) => rows.isEmpty
|
||||
data: (cached) => cached.data.isEmpty
|
||||
? const EmptyState(icon: Icons.show_chart, message: 'Пока нет данных.')
|
||||
: _ValueChart(rows: rows),
|
||||
: _ValueChart(rows: cached.data),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
@@ -54,9 +54,9 @@ class HoldingsTab extends ConsumerWidget {
|
||||
child: AsyncValueView(
|
||||
value: returns,
|
||||
onRetry: () => ref.invalidate(portfolioReturnsProvider),
|
||||
data: (rows) => rows.isEmpty
|
||||
data: (cached) => cached.data.isEmpty
|
||||
? const EmptyState(icon: Icons.percent, message: 'Пока нечего считать.')
|
||||
: _ReturnsTable(rows: rows),
|
||||
: _ReturnsTable(rows: cached.data),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
@@ -70,12 +70,12 @@ class HoldingsTab extends ConsumerWidget {
|
||||
child: AsyncValueView(
|
||||
value: holdings,
|
||||
onRetry: () => ref.invalidate(holdingsProvider),
|
||||
data: (rows) => rows.isEmpty
|
||||
data: (cached) => cached.data.isEmpty
|
||||
? const EmptyState(
|
||||
icon: Icons.inventory_2_outlined,
|
||||
message: 'Открытых позиций нет — нужна синхронизация брокера.',
|
||||
)
|
||||
: _HoldingsTable(rows: rows),
|
||||
: _HoldingsTable(rows: cached.data),
|
||||
),
|
||||
),
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user