Feedback
Widgets de loading, empty, error e shimmer.
ArchbaseLoading
Spinner centralizado com label opcional.
const ArchbaseLoading(label: 'Carregando dados…')
Variante inline (sem centralizar):
const ArchbaseInlineLoading()
ArchbaseEmptyState
ArchbaseEmptyState(
title: 'Sem visitas',
message: 'Toque no + para criar a primeira',
icon: Icons.inbox,
action: ElevatedButton(
onPressed: onCreate,
child: const Text('Criar agora'),
),
)
ArchbaseErrorView
ArchbaseErrorView(
title: 'Falha ao carregar',
message: error.toString(),
onRetry: () => controller.reload(),
)
Versão compacta (linha):
ArchbaseErrorView.compact(message: '...', onRetry: ...)
ArchbaseShimmer / ArchbaseShimmerList
Skeleton tema-aware (light/dark):
ArchbaseShimmer(child: Container(height: 100, color: Colors.white))
ArchbaseShimmerList(count: 6, itemHeight: 96)
ArchbaseSyncStatusBanner
Banner reativo da fila offline:
ArchbaseSyncStatusBanner(
queue: ArchbaseBootstrap.syncQueue,
connectivity: ArchbaseBootstrap.connectivity,
)
Mostra:
- "Sem conexão" quando offline
- "Sincronizando N alterações…" quando flush em andamento
- "N alterações pendentes" quando online mas com fila
- Some quando tudo sincronizado