app.dart 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import 'package:get/get.dart';
  2. import 'package:get_storage/get_storage.dart';
  3. import 'package:package_info_plus/package_info_plus.dart';
  4. import 'package:system_clock/system_clock.dart';
  5. import 'user_profile.dart';
  6. export 'user_profile.dart';
  7. class AppService extends GetxService{
  8. final userProfile = UserProfile();
  9. static AppService get to => Get.find();
  10. late String appVersion;
  11. final _serverTime = _ServerTime();
  12. DateTime get now=>_serverTime.now();
  13. Future<AppService> init()async{
  14. await GetStorage.init();
  15. final packageInfo = await PackageInfo.fromPlatform();
  16. appVersion = packageInfo.version;
  17. return this;
  18. }
  19. correctByServerNow(DateTime serverNow)=>_serverTime.correctByServerNow(serverNow);
  20. }
  21. class _ServerTime{
  22. Duration? _systemOpenTimeWhenRcvServerTime;
  23. DateTime? _serverTime;
  24. correctByServerNow(DateTime serverNow){
  25. _systemOpenTimeWhenRcvServerTime = SystemClock.elapsedRealtime();
  26. _serverTime = serverNow;
  27. }
  28. DateTime now(){
  29. if(_systemOpenTimeWhenRcvServerTime==null){
  30. return DateTime.now();
  31. }
  32. return _serverTime!.add(SystemClock.elapsedRealtime() - _systemOpenTimeWhenRcvServerTime!);
  33. }
  34. }