adaptive_number
提供適應性數字實現的程式庫。在 JS 執行環境中,將使用 64 位有符號固定寬度整數,而在所有其他平台則使用預設的 Dart int 資料類型。
lemoony/adaptive_number_dart open-source repository details.
以下為英文專案原文快照,最新內容請造訪 GitHub。
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.
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:
Number wraps a fixnum/Int64Number 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
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.
Please file feature requests and bugs at the issue tracker.
先依使用情境篩選,再比較專案活躍情況,最後到原始儲存庫確認使用要求。
“A repository is the most basic element of GitHub.”
GitHub Docs — About repositories ↗