Pular para o conteúdo principal

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