首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >颤动传感器停止侦听传感器事件

颤动传感器停止侦听传感器事件
EN

Stack Overflow用户
提问于 2020-05-18 22:17:07
回答 1查看 245关注 0票数 1

我使用非常简单的解决方案来侦听传感器事件,并在带有Sensor包的简单颤动应用程序上进行打印。我使用的是WidgetsBindingObserver,基于生命周期事件,我想要侦听并停止,比如andorid。我可以开始使用自述文件中提到的accelerometerEvents.listen((AccelerometerEvent event){}方法来监听传感器的值变化。但这在恢复状态下不起作用,但在initState()下起作用。

我如何正确地开始和停止这个监听?

代码:

代码语言:javascript
复制
 @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;
    }
EN

回答 1

Stack Overflow用户

发布于 2020-12-10 04:41:12

你必须用_streamSubscriptions.add(accelerometerEvents.listen((AccelerometerEvent事件包装"accelerometerEvents.listen“) {})。

用于初始化监听的

代码语言:javascript
复制
_streamSubscriptions
    .add(accelerometerEvents.listen((AccelerometerEvent event) {
  setState(() {
    _accelerometerValues = <double>[event.x, event.y, event.z];
  });
}));

用于停止监听的

代码语言:javascript
复制
for (StreamSubscription<dynamic> subscription in _streamSubscriptions) {
  subscription.cancel();
}

完整示例:https://pub.flutter-io.cn/packages/sensors/example

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61871686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档