颤振传感器停止侦听传感器事件

  • 本文关键字:传感器 事件 flutter
  • 更新时间 :
  • 英文 :


我正在使用非常简单的解决方案来侦听传感器事件并在带有传感器包的简单颤振应用程序上进行打印。我正在使用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;
}

你必须用 _streamSubscriptions.add(accelerometerEvents.listen((AccelerometerEvent event( {}( 包装"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://pub.flutter-io.cn/packages/sensors/example

最新更新