Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev1.0.0

global_assert

Uma microbiblioteca que facilita a realização de afirmações em tempo de compilação sobre constantes, para que aplicativos mal configurados falhem no tempo de compilação em vez de falharem em tempo de execução.

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
9,6 mil
Curtidas
7
Pontos Pub
160

Instalar pacote

flutter pub add global_assert

Visão geral do pacote

Orientação gerada a partir de informações públicas. Apenas para referência.

GlobalAssert é um pacote leve em Dart que permite asserções em tempo de compilação para constantes, ajudando a detectar erros de configuração cedo durante o processo de build, em vez de em tempo de execução. Validando valores críticos em tempo de compilação, ele melhora a confiabilidade do aplicativo e reduz o risco de falhas silenciosas em produção. Ideal para impor condições invariantes em dados estáticos, integra-se perfeitamente em projetos Flutter em todas as principais plataformas.

Casos de uso

  • Validando constantes de configuração
  • Evitando erros em tempo de execução causados por configurações incorretas
  • Aplicando verificações de invariância durante a compilação
  • Melhorando a confiabilidade do teste
  • Detectar estado inválido cedo
  • Garantir inicialização segura

Principais recursos

  • Avaliação de asserção em tempo de compilação
  • API simples para validação constante
  • Sem sobrecarga em tempo de execução
  • Suporte multiplataforma
  • Integração com o sistema de compilação do Flutter
  • Pé de dependência mínima

Indicado para

  • Desenvolvedores que priorizam a segurança em tempo de compilação
  • Equipes que usam análise estática para controle de qualidade
  • Projetos com requisitos rígidos de configuração
  • Aplicativos Flutter que exigem verificações robustas de inicialização
  • Pipelines de CI/CD que precisam de detecção precoce de falhas

Considerações

  • Funciona apenas com constantes de tempo de compilação
  • Limitado a condições booleanas simples
  • Não substitui a validação em tempo de execução
  • Requer compreensão da execução em tempo de compilação
  • Pode aumentar levemente o tempo de compilação
  • Não adequado para dados dinâmicos ou fornecidos pelo usuário

README original

Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.

A micro-library for asserting at build time.

pub package Build Status Coverage

It's a common practice to configure a Dart app using const (build-time) values. There are benefits to this approach, such as enabling tree shaking of unused code.

This library makes it easy to do build-time assertions about such constants so that misconfigured apps fail at build-time instead of failing at runtime.

Usage

Use this library to validate your app's const values at build time. Anything can be annotated with @Assert.

//
// This app will fail compilation with '--define=MY_VAL=foo'
//

@Assert(
  myBuildTimeVal == 'val1' || myBuildTimeVal == 'val2',
  'myBuildTimeVal must be one of "val1" or "val2"',
)
const myBuildTimeVal = String.fromEnvironment('MY_VAL');

void main() {
  print('myBuildTimeVal is "$myBuildTimeVal"');
}

FAQ

🤔 How does this even work?!

The Dart compiler invokes annotation constructors at compile-time. This micro-library takes advantage of that to "trick" the compiler into allowing build-time asserts that can be placed (almost) anywhere. Special thanks to Kyle Turney for the inspiration behind this approach.

Why not allow an assert without a message?

Unfortunately, Dart doesn't treat an assert with a null message the same as an assert without any message at all. This means that we would need two constructors for @Assert to enable both messageless asserts and asserts with messages. Instead, we made the design choice when creating this micro-library that @Assert should require a non-null message. This enforces more meaningful compilation failure messages.

Will this always be needed?

We expect that when Dart supports metaprogramming, this library will be deprecated.

Categorias

Repositório-fonte

Projetos que usam este pacote

Ainda não há dados.