gpt4 book ai didi

android - 如何设置 flutter 位置的间隔以接收数据

转载 作者:行者123 更新时间:2023-12-01 19:34:29 35 4
gpt4 key购买 nike

我一直在尝试使用Location package通过onLocationChanged()方法获取位置数据。我也成功了。但是问题是我需要慢速/延迟从包接收的位置数据。我增加了interval期间,但没有成功。

我需要降低数据接收速度,以便应用程序可以平稳运行,否则会滞后。

这是我遵循的代码片段,

  Location location = new Location();
StreamSubscription _locationSubscription;

void initState() {
super.initState();
_animateToUser();
}

@override
void dispose() {
if (_locationSubscription != null) {
_locationSubscription.cancel();
}
super.dispose();
}

Widget build(BuildContext context) {
return Stack(
children: <Widget>[
GoogleMap(
initialCameraPosition: CameraPosition(
target: LatLng(6.854399, 79.865463),
zoom: 14.44,
),
myLocationEnabled: true,
onMapCreated: _onMapCreated,
),
],
);
}

_onMapCreated(GoogleMapController controller) {
setState(() {
mapController = controller;
});
}

_animateToUser() async {

location.changeSettings(interval: 3000, distanceFilter: 10.0);
_locationSubscription = location.onLocationChanged().listen((newData) {

print(newData.latitude);

mapController.animateCamera(
CameraUpdate.newCameraPosition(
CameraPosition(
target: LatLng(newData.latitude, newData.longitude),
zoom: 17.0
)
)
);

});

}

我认为我定义 changeSettings()的方式可能是错误的。
location.changeSettings(interval: 3000, distanceFilter: 10.0);
我的方法是正确的还是还有其他方法可以做到?

任何帮助将非常感激。

更新了
_locationSubscription = location.onLocationChanged().listen((newData) {

const oneSec = const Duration(seconds: 5);
new Timer.periodic(oneSec, (Timer t) {

print(newData.latitude);

mapController.animateCamera(
CameraUpdate.newCameraPosition(
CameraPosition(
target: LatLng(newData.latitude, newData.longitude),
zoom: 17.0
)
)
);

updateToDb(newData);

});

});

最佳答案

根据软件包的文档,interval仅在Android上有效,因此您应该设计自己的逻辑来确定 map 的更新频率,例如使用Timer.periodic

另外,changeSettingsFuture,因此您的当前代码可能会在应用设置之前开始侦听位置更改。您应该await调用changeSettings

关于android - 如何设置 flutter 位置的间隔以接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60628321/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com