在设备时间被修改(离线模式)时,如何在Flutter中获取可靠的当前时间?

移动开发 2026-07-10

我正在开发一个Flutter应用,需要准确记录时间(例如考勤、会话跟踪或基于时间的校验)。

问题:

在Flutter中,在离线模式下实现准确的时间跟踪,当用户可能修改设备时间时,最佳做法是什么?

我面临的问题是:

  • 如果用户手动修改设备时间(前移/后移),我的应用逻辑会因为依赖于DateTime.now()而出错。
  • 离线模式 下,无法依赖服务器时间(NTP/API)。

当前做法:

DateTime now = DateTime.now();

但这完全依赖设备时钟,无法信任。

问题(再述):

如何在Flutter中获得一个可靠且防篡改的时间,当:

  • 应用处于 离线 状态
  • 设备时间可能被用户篡改

我尝试 / 考虑过:

  • 使用 DateTime.now() → 不可靠
  • 与服务器时间同步 → 在离线模式下不可行
  • 存储上次已知时间 → 仍然可能被绕过

解决方案

据Google的说法,iOS与 Android都提供卫星时间(GPS/GNSS),不过我还不知道是否已有Dart包可以访问它们。

编辑:请看 https://pub.dev/packages/gps_time_plugin

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章