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

标签 firebase flutter dart geolocation dart-pub

使用 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/

相关文章:

java - Android 即时功能 : Is it something fundamentally flawed with this approach?

regex - Flutter 无法解析正则表达式

dart - 在 VSCode 中使用 Dart 进行重构不起作用

api - 来自 Flutter 中的 PHP 的 API 流(不是 Firebase)

javascript - 由于唯一的 id 容器,无法检查 Firebase 中是否存在数据

Firebase 安全规则 : Allow if user uid exists in a collection as a document

flutter - 如何:在TextFormField中键入时,每4个字符后添加一个空格

Flutter/Dart 内存对象缓存?

java - Android Studio 如何在静态方法中引用 Activity 本身

flutter : Show an Alert Dialog after an async Api call