userAccelerometerEvents property
Events from the device accelerometer with gravity removed.
Implementation
@override
Stream<UserAccelerometerEvent> get userAccelerometerEvents {
if (_userAccelerometerStreamController == null) {
_userAccelerometerStreamController =
StreamController<UserAccelerometerEvent>();
_featureDetected(
() {
final linearAccelerationSensor = html.LinearAccelerationSensor();
setProperty(
linearAccelerationSensor,
'onreading',
allowInterop(
(_) {
_userAccelerometerStreamController!.add(
UserAccelerometerEvent(
linearAccelerationSensor.x as double,
linearAccelerationSensor.y as double,
linearAccelerationSensor.z as double,
),
);
},
),
);
linearAccelerationSensor.start();
linearAccelerationSensor.onError.forEach(
(e) => developer.log(
'The linear acceleration API is supported but something is wrong!',
error: e),
);
},
apiName: 'LinearAccelerationSensor()',
permissionName: 'accelerometer',
onError: () {
_userAccelerometerStreamController!
.add(UserAccelerometerEvent(0, 0, 0));
},
);
_userAccelerometerResultStream =
_userAccelerometerStreamController!.stream.asBroadcastStream();
}
return _userAccelerometerResultStream;
}