Error: The method 'getPositionStream' isn't defined for the class 'Geolocator'
1,877
No need to instantiate Geolocator
. getPositionStream()
is a static method called like so, Geolocator.getPositionStream()
. The args passed to the method are all optional params as well. No locationOptions necessary.
Updated
void getLocationUpdates(){
StreamSubscription<Position> homeTabPostionStream;
homeTabPostionStream = Geolocator.getPositionStream(
desiredAccuracy: LocationAccuracy.bestForNavigation,
distanceFilter: 4).listen((event) {
...
});
}
You can remove
var geoLocator = Geolocator();
var locationOptions = LocationOptions(accuracy: LocationAccuracy.bestForNavigation, distanceFilter: 4);
Author by
maximus383
Hello I'm a student at Faculty of Computer Science. This is my senior year.
Updated on December 25, 2022Comments
-
maximus383 over 1 year
Using flutter I try to retrieve the current position using StreamSubscription and getPositionStream in geo locator. But I keep getting the error: Error: The method 'getPostionStream' isn't defined for the class 'Geolocator'.
Here is my function:
void getLocationUpdates(){ StreamSubscription<Position> homeTabPostionStream; homeTabPostionStream = geoLocator.getPositionStream(locationOptions).listen((Position position){ currentPosition = position; });
Here I created the variables:
var geoLocator = Geolocator(); var locationOptions = LocationOptions(accuracy: LocationAccuracy.bestForNavigation, distanceFilter: 4);
As you requested I write the entire code for reference.
Here is the entire code:
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; });