Pakete, Repositories und App-Kategorien suchen

Paketdetailsv1.0.0

adaptive_number

Bibliothek zur Bereitstellung einer adaptiven Zahlimplementierung. Auf JS-Laufzeiten wird ein 64-Bit-Integer mit Vorzeichen und fester Breite verwendet, für alle anderen Plattformen der Standard-Dart-int-Datentyp.

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
678.000
Likes
2
Pub-Punkte
150

Paket installieren

flutter pub add adaptive_number

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

Das adaptive_number-Paket bietet einen Zahlen-Typ, der sich an die Laufzeitumgebung anpasst. Auf JavaScript-Plattformen verwendet es eine 64-Bit-Integer-Zahl mit festem Format und Vorzeichen für konsistente Genauigkeit, während auf allen anderen Plattformen standardmäßig der native int-Typ von Dart verwendet wird. Dadurch wird ein zuverlässiges Verhalten über Web- und Native-Umgebungen hinweg gewährleistet, insbesondere bei der Arbeit mit großen Ganzzahlen oder bei Anforderungen an plattformübergreifende Konsistenz bei numerischen Operationen.

Anwendungsfälle

  • Plattformübergreifende Ganzzahlverwaltung
  • Web-basierte Anwendungen mit großen Zahlen
  • Konsistente Arithmetik über Plattformen
  • Datenserialisierung, die ganze Zahlen beinhaltet
  • Numerische Berechnungen in Flutter-Web-Anwendungen

Hauptmerkmale

  • Plattformabhängige adaptive Ganzzahlgröße
  • 64-Bit-Ganzzahlen mit fester Breite in JS
  • Native-int-Fallback auf nicht-JS-Plattformen
  • Konsistentes Verhalten über Laufzeiten hinweg
  • Einfache Integration mit bestehendem Code

Geeignet für

  • Entwickler, die sich auf Web- und Native-Plattformen konzentrieren
  • Apps, die präzise Ganzzahlarithmetik erfordern
  • Projekte, die Portabilität der numerischen Logik benötigen
  • Teams, die JS-spezifische Zahlbegrenzungen vermeiden
  • Flutter-Apps mit gemeinsamer Geschäftslogik

Hinweise

  • Nur auf ganze Zahlen beschränkt
  • Keine Unterstützung für Gleitkommazahlen
  • Leistungsüberhead auf nicht-JS-Plattformen
  • Könnte für einfache Anwendungsfälle nicht erforderlich sein
  • Erfordert sorgfältige Tests auf JS-Zielen

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

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.

Kategorien

Abhängigkeiten

Abhängigkeiten 1 Einträge

Quell-Repository

Projekte, die dieses Paket verwenden