Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev1.0.0

adaptive_number

Biblioteca que fornece uma implementação adaptável de número. Em tempo de execução JS, será usado um inteiro com sinal de 64 bits com largura fixa e para todas as outras plataformas, o tipo de dados int padrão do Dart.

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
678 mil
Curtidas
2
Pontos Pub
150

Instalar pacote

flutter pub add adaptive_number

Visão geral do pacote

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

O pacote adaptive_number fornece um tipo numérico que se adapta ao ambiente de execução. Em plataformas JavaScript, ele usa um inteiro com sinal de 64 bits e largura fixa para precisão consistente, enquanto em todas as demais plataformas ele usa por padrão o tipo int nativo do Dart. Isso garante um comportamento confiável entre ambientes web e nativos, especialmente ao lidar com inteiros grandes ou quando é necessário consistência entre plataformas em operações numéricas.

Casos de uso

  • Manipulação de inteiros multiplataforma
  • Aplicações baseadas na web com grandes números
  • Aritmética consistente entre plataformas
  • Serialização de dados envolvendo inteiros
  • Cálculos numéricos em aplicativos web do Flutter

Principais recursos

  • Tamanho inteiro adaptável com base na plataforma
  • Inteiros de largura fixa de 64 bits no JS
  • fallback de int nativo em plataformas não-JS
  • Comportamento consistente entre execuções
  • Integração simples com código existente

Indicado para

  • Desenvolvedores direcionados para plataformas web e nativas
  • Aplicativos que exigem aritmética inteira precisa
  • Projetos que precisam de portabilidade da lógica numérica
  • Equipes evitando limitações numéricas específicas do JS
  • Aplicativos Flutter com lógica de negócios compartilhada

Considerações

  • Limitado a valores inteiros apenas
  • Sem suporte para números de ponto flutuante
  • Sobrecarga de desempenho em plataformas não-JS
  • Pode não ser necessário para casos de uso simples
  • Requer testes cuidadosos em destinos JS

README original

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

adaptive_number

pub package Language Build codecov

A library providing a Number implementation that is dependent on the platform it is compiled for. For JS runtimes, the implementation uses a 64-bit signed fixed-width integer, for all other platforms the default Dart int data type.

Use cases of this library

The Number substitute is useful in situations where a value may overflow on JS runtimes since the available value range is not the same compared to mobile or desktop platforms:

https://api.dart.dev/stable/2.8.4/dart-core/int-class.html

The overflow on JS environments can be circumvented by using a BigInt or the fixed-with implementation of this library: https://pub.dev/packages/fixnum

The disadvantage of just replacing all usages of int with BigInt or fixnum/Int64 is that the performance on mobile platforms may suffer significantly.

The adpative_number library takes a conditional import approach to ease this problem:

  • If it runs on a JS runtime, Number wraps a fixnum/Int64
  • For all other platforms Number wraps a default Dart int type.

Some historical background of this library can also be seen in: https://github.com/MixinNetwork/libsignal_protocol_dart/pull/43

Usage

A Number instance is created by wrapping it around a default int value:

import 'package:adaptive_number/adaptive_number.dart';

void main() {
  final number1 = Number(93432);
  final number2 = Number(42435);
  assert((number1 + number2) == Number(51777));
}

All other operations on Number behave the same way as with int.

Features and bugs

Please file feature requests and bugs at the issue tracker.

Categorias

Dependências

Lista de dependências 1 itens

Repositório-fonte

Projetos que usam este pacote