如何在应用程序启动时获得位置,以便在应用程序Flutter中使用



我有一些页面需要用户位置进行计算,但问题是每次在这些页面上,我每次加载屏幕时都使用以下方法。

void getCurrentLocation() async {
Location _location = Location();
await _location.getLocation().then(
(newLocation) {
setState(() {
currentLocation = newLocation;
});
},
);
}

有没有一种方法可以在启动时运行一次,或者让它在后台运行,并在每个页面中轻松访问它,以节省加载时间?因为我的应用程序必须加载每个屏幕,并且感觉非常慢

尝试为Location创建一个全局变量。

现在,在应用程序init上,将当前位置存储在一个全局变量中。&你可以在任何地方使用它。

您可以始终将整个应用程序包装在blocProvider中,并有一个用于收集位置并存储它的区块,例如:以位置为参数的用户模型。然后信息只收集一次(如果你告诉它(,并且可以从上下文访问整个应用程序。

当然,有一个快速而混乱的解决方案。创建文件location.dart或其他任何文件,创建参数const String location;或以其他方式存储(List<double> [lat lon](。在开始时制作一个加载屏幕,收集用户位置并将其分配给前面提到的变量。然后import 'whatever/location.dart' as location;到每个使用位置的小部件,并使用location.location访问它

最新更新