我使用非常简单的解决方案来侦听传感器事件,并在带有Sensor包的简单颤动应用程序上进行打印。我使用的是WidgetsBindingObserver,基于生命周期事件,我想要侦听并停止,比如andorid。我可以开始使用自述文件中提到的accelerometerEvents.listen((AccelerometerEvent event){}方法来监听传感器的值变化。但这在恢复状态下不起作用,但在initState()下起作用。
我如何正确地开始和停止这个监听?
代码:
@override
void initState(){
print("We are on initstate.");
super.initState();
accelerometerEvents.listen((AccelerometerEvent event) {
print(event);
setSensorValue(event.toString());
}); // [UserAccelerometerEvent (x: 0.0, y: 0.0, z: 0.0)]
}
@override
void dispose() {
super.dispose();
print("We are on initstate.");
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
switch (state){
case AppLifecycleState.resumed:
userAccelerometerEvents.listen((UserAccelerometerEvent event) {
print(event);
}); // [UserAccelerometerEvent (x: 0.0, y: 0.0, z: 0.0)]
break;
case AppLifecycleState.paused:
//cancel listening userAccelerometerEvents.
break;
case AppLifecycleState.inactive:
break;
case AppLifecycleState.detached:
// TODO: Handle this case.
break;
}发布于 2020-12-10 04:41:12
你必须用_streamSubscriptions.add(accelerometerEvents.listen((AccelerometerEvent事件包装"accelerometerEvents.listen“) {})。
用于初始化监听的:
_streamSubscriptions
.add(accelerometerEvents.listen((AccelerometerEvent event) {
setState(() {
_accelerometerValues = <double>[event.x, event.y, event.z];
});
}));用于停止监听的:
for (StreamSubscription<dynamic> subscription in _streamSubscriptions) {
subscription.cancel();
}https://stackoverflow.com/questions/61871686
复制相似问题