gpt4 book ai didi

firebase - 错误 : The method 'getPositionStream' isn't defined for the class 'Geolocator'

转载 作者:行者123 更新时间:2023-12-03 21:09:45 26 4
gpt4 key购买 nike

使用 flutter ,我尝试在地理定位器中使用 StreamSubscription 和 getPositionStream 检索当前位置。
但我不断收到错误消息:错误:未为类“Geolocator”定义方法“getPostionStream”。
这是我的功能:

void getLocationUpdates(){
StreamSubscription<Position> homeTabPostionStream;

homeTabPostionStream = geoLocator.getPositionStream(locationOptions).listen((Position position){
currentPosition = position;
});
在这里我创建了变量:
var geoLocator = Geolocator();
var locationOptions = LocationOptions(accuracy: LocationAccuracy.bestForNavigation, distanceFilter: 4);
根据您的要求,我编写了整个代码以供引用。
这是整个代码:
class HomeTab extends StatefulWidget {
@override
_HomeTabState createState() => _HomeTabState();
}

class _HomeTabState extends State<HomeTab> {

GoogleMapController mapController;
Completer<GoogleMapController> _controller = Completer();

Position currentPosition;

DatabaseReference tripRequestRef;

var geoLocator = Geolocator();
var locationOptions = LocationOptions(accuracy: LocationAccuracy.bestForNavigation, distanceFilter: 4);


void getCurrentPosition() async{

Position position = await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.bestForNavigation);
currentPosition = position;
LatLng pos = LatLng(position.latitude, position.longitude);
mapController.animateCamera(CameraUpdate.newLatLng(pos));

}

@override
Widget build(BuildContext context) {
return Stack(
children: <Widget>[
GoogleMap(
padding: EdgeInsets.only(top: 135),
myLocationEnabled: true,
myLocationButtonEnabled: true,
mapType: MapType.normal,
initialCameraPosition: googlePlex,
onMapCreated: (GoogleMapController controller){
_controller.complete(controller);
mapController = controller;

getCurrentPosition();
},
),
Container(
height: 135,
width: double.infinity,
color: BrandColors.colorPrimary,
),

Positioned(
top: 60,
left: 0,
right: 0,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
AvailabilityButton(
title: 'GO ONLINE',
color: BrandColors.colorOrange,
onPressed: (){

GoOnline();

},
),
],
),
),

],
);
}

void GoOnline(){
Geofire.initialize('driversAvailable');
Geofire.setLocation(currentFirebaseUser.uid, currentPosition.latitude, currentPosition.longitude);

tripRequestRef = FirebaseDatabase.instance.reference().child('drivers/${currentFirebaseUser.uid}/newtrip');
tripRequestRef.set('waiting');

tripRequestRef.onValue.listen((event) {



});

}

void getLocationUpdates(){
StreamSubscription<Position> homeTabPostionStream;

homeTabPostionStream = geoLocator.getPositionStream(locationOptions).listen((Position position){
currentPosition = position;
});

最佳答案

无需实例化 GeolocatorgetPositionStream() 是一个静态方法,就像这样, Geolocator.getPositionStream() 。传递给方法的 args 也是可选参数。不需要位置选项。
更新

void getLocationUpdates(){
StreamSubscription<Position> homeTabPostionStream;

homeTabPostionStream = Geolocator.getPositionStream(
desiredAccuracy: LocationAccuracy.bestForNavigation,
distanceFilter: 4).listen((event) {
...
});
}
你可以删除
var geoLocator = Geolocator();
var locationOptions = LocationOptions(accuracy: LocationAccuracy.bestForNavigation, distanceFilter: 4);

关于firebase - 错误 : The method 'getPositionStream' isn't defined for the class 'Geolocator' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64810376/

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