plug_orientation2.dart 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import 'dart:async';
  2. import 'package:get/get.dart';
  3. import 'package:trackoffical_app/service/app.dart';
  4. import 'package:sensor/sensor.dart' as sensor;
  5. import 'compass_updater.dart';
  6. import 'plug.dart';
  7. typedef Orientation = sensor.Orientation;
  8. class PlugOrientation extends Plug{
  9. PlugOrientation();
  10. final _app = App.to;
  11. final _angleSrcUpdater = CompassUpdater();
  12. final orientation=Orientation().obs;
  13. // /// 指北针弧度,移动时通过GPS判断
  14. // final compassRadiansFused = 0.0.obs;
  15. final compassRadiansSrc = 0.0.obs;
  16. var accelerometerEvent = sensor.Orientation();
  17. var compassRealNorthOffset = 0.0;
  18. @override
  19. Future<void> init() async{
  20. listenStream(sensor.Sensor.orientationStream, (event) {
  21. orientation.value = event;
  22. var direction = event.z;
  23. if (App.to.userProfile.gameSettingsRealNorth.value) {
  24. direction += compassRealNorthOffset;
  25. }
  26. final src = _angleSrcUpdater.updateRadians(direction);
  27. if(src!=null){
  28. compassRadiansSrc.value = -src;
  29. }
  30. });
  31. }
  32. @override
  33. Future<void> onClose() async{
  34. _app.locationStop();
  35. }
  36. }