【问题标题】:Flutter Location plugin: stop listining on disposeFlutter Location 插件:停止监听 dispose
【发布时间】:2019-09-24 10:11:33
【问题描述】:

我正在使用Location 插件来获取用户的当前位置。它工作正常。

但是当用户关闭当前页面时,我需要停止位置监听。

listenLocation=  (LocationData locationData) async {
      if (mounted) {
        setState(() {
          userLocation = locationData;
        });
      }
      print("lat: " +
          userLocation.latitude.toString() +
          " - Long: " +
          userLocation.longitude.toString());
    };
    location.onLocationChanged().listen(listenLocation);

如何在 dispose 方法中停止监听?

【问题讨论】:

    标签: flutter geolocation location


    【解决方案1】:

    我一直在寻找这个问题的答案,结果你需要执行以下操作。

    import 'dart:async';
    
    StreamSubscription<LocationData> locationSubscription;
    
    locationSubscription = location.onLocationChanged().listen((LocationData currentLocation)
    {
      //Your code
    });
    

    然后停止它调用

    locationSubscription.cancel();
    

    如果您想从上次中断的地方继续通话

    locationSubscription.resume();
    

    希望它能帮助那些真正想要停止后台侦听器的人,而不仅仅是让它们继续运行,因为它不在包的文档中。

    【讨论】:

    • 这行得通,谢谢。顺便说一句,放置 locationSubscription = location.onLocationChanged().listen 的最佳位置在哪里
    猜你喜欢
    • 2021-10-30
    • 2023-03-14
    • 2013-03-13
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 2016-01-07
    相关资源
    最近更新 更多