import 'dart:async'; import 'package:get/get.dart'; import 'package:trackoffical_app/service/app.dart'; import 'package:sensor/sensor.dart' as sensor; import 'compass_updater.dart'; import 'plug.dart'; typedef Orientation = sensor.Orientation; class PlugOrientation extends Plug{ PlugOrientation(); final _app = App.to; final _angleSrcUpdater = CompassUpdater(); final orientation=Orientation().obs; // /// 指北针弧度,移动时通过GPS判断 // final compassRadiansFused = 0.0.obs; final compassRadiansSrc = 0.0.obs; var accelerometerEvent = sensor.Orientation(); var compassRealNorthOffset = 0.0; @override Future init() async{ listenStream(sensor.Sensor.orientationStream, (event) { orientation.value = event; var direction = event.z; if (App.to.userProfile.gameSettingsRealNorth.value) { direction += compassRealNorthOffset; } final src = _angleSrcUpdater.updateRadians(direction); if(src!=null){ compassRadiansSrc.value = -src; } }); } @override Future onClose() async{ _app.locationStop(); } }