Kronos – Flutter 的 NTP 插件
与设备时钟不同,Kronos 报告的时间在应用程序运行时不会受到本地时间更改的影响。相反,Kronos 会存储准确的时间以及 NTP 时间与系统正常运行时间之间的增量。由于正常运行时间是单调递增的,因此 Kronos 不受设备时间更改的影响。访问 KronosClock.getCurrentTimeMs() 将返回基于最后已知准确时间 + 自上次同步以来的增量的本地时间。
此插件基于 iOS 上的 Kronos 和 Android 上的 Kronos-Android 实现完整的 SNTP 协议。
安装
只需将 flutter_kronos 作为 依赖项添加到您的 pubspec.yaml 文件。
Android
在您的 Android Manifest 文件中添加以下权限
<uses-permission android:name="android.permission.INTERNET"/>
用法
使用 NTP 服务器池同步时钟
调用 Clock.sync 将向给定 NTP 池中的最多 5 个服务器发出大量 NTP 请求。
一旦
我们收到第一个响应,就会调用给定的闭包,但 Clock
将继续尝试获取更准确的响应。
KronosClock.sync();
获取 NTP 时间
KronosClock.getCurrentTimeMs(); //return time from the fallback clock if Kronos has not yet been synced
KronosClock.getCurrentNtpTimeMs(); //return null if Kronos has not yet been synced