首页 > 解决方案 > 使用 Geofire 查询时出现 getter 错误

问题描述

我正在尝试使用 geoflutterfire 查询数据库。一切似乎都运行良好,但是当我查询时,我收到此错误:纬度和经度是从地理定位器插件以编程方式获取的,但颤动会抛出以下错误。 在此处输入图像描述

 E/flutter ( 3310): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: NoSuchMethodError: The getter 'latitude' was called on null.
E/flutter ( 3310): Receiver: null
E/flutter ( 3310): Tried calling: latitude
E/flutter ( 3310): #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:53:5)
E/flutter ( 3310): #1      _DoctorsStreamState._animateToUser (package:firstaidpatient/serviceproviders_screen/doctors_stream.dart:296:30)
E/flutter ( 3310): <asynchronous suspension>
E/flutter ( 3310): #2      _DoctorsStreamState._onMapCreated.<anonymous closure> (package:firstaidpatient/serviceproviders_screen/doctors_stream.dart:268:7)
E/flutter ( 3310): #3      State.setState (package:flutter/src/widgets/framework.dart:1233:30)
E/flutter ( 3310): #4      _DoctorsStreamState._onMapCreated (package:firstaidpatient/serviceproviders_screen/doctors_stream.dart:267:5)
E/flutter ( 3310): #5      _GoogleMapState.onPlatformViewCreated (package:google_maps_flutter/src/google_map.dart:307:26)
E/flutter ( 3310): <asynchronous suspension>
E/flutter ( 3310): #6      AndroidViewController._create (package:flutter/src/services/platform_views.dart:636:15)
E/flutter ( 3310): <asynchronous suspension>
E/flutter ( 3310): #7      AndroidViewController.setSize (package:flutter/src/services/platform_views.dart:550:14)
E/flutter ( 3310): #8      RenderAndroidView._sizePlatformView (package:flutter/src/rendering/platform_view.dart:175:29)
E/flutter ( 3310): #9      RenderAndroidView.performResize (package:flutter/src/rendering/platform_view.dart:156:5)
E/flutter ( 3310): #10     RenderObject.layout (package:flutter/src/rendering/object.dart:1746:9)
E/flutter ( 3310): #11     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
E/flutter ( 3310): #12     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
E/flutter ( 3310): #13     RenderStack.performLayout (package:flutter/src/rendering/stack.dart:556:15)
E/flutter ( 3310): #14     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
E/flutter ( 3310): #15     RenderConstrainedBox.performLayout (package:flutter/src/rendering/proxy_box.dart:266:13)
E/flutter ( 3310): #16     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
E/flutter ( 3310): #17     RenderPositionedBox.performLayout (package:flutter/src/rendering/shifted_box.dart:394:13)
E/flutter ( 3310): #18     RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
E/flutter ( 3310): #19     MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:171:11)
E/flutter ( 3310): #20     _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:484:7)
E/flutter ( 3310): #21     MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:240:7)
E/flutter ( 3310): #22     RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:399:14)
E/flutter ( 3310): #23     RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1630:7)
E/flutter ( 3310): #24     PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:887:18)
E/flutter ( 3310): #25     RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:402:19)
E/flutter ( 3310): #26     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:884:13)
E/flutter ( 3310): #27     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:284:5)
E/flutter ( 3310): #28     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1113:15)
E/flutter ( 3310): #29     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1052:9)
E/flutter ( 3310): #30     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:968:5)
E/flutter ( 3310): #31     _rootRun (dart:async/zone.dart:1184:13)
E/flutter ( 3310): #32     _CustomZone.run (dart:async/zone.dart:1077:19)
E/flutter ( 3310): #33     _CustomZone.runGuarded (dart:async/zone.dart:979:7)
E/flutter ( 3310): #34     _invoke (dart:ui/hooks.dart:261:10)
E/flutter ( 3310): #35     _drawFrame (dart:ui/hooks.dart:219:3)

有人可以解释问题是什么吗?我的所有坐标都已正确获取并存储在 Firestore 中。

该查询是在 initState 上调用的,它给出了上述错误,并且在谷歌地图上没有产生任何结果

 _startQuery() async {
    try {
      // Get querying phone location
      var pos = await geoLocator.getCurrentPosition();
      double userLatitude = pos.latitude;
      double userLongitude = pos.longitude;
      // get center points from users location
      GeoFirePoint center = geoflutterfire.point(
          latitude: userLatitude, longitude: userLongitude);
      stream = radius.switchMap((rad) {
        //make a firestore reference
        var ref = _firestore.collection('myLocation');
        //query data from firestore
        return geoflutterfire.collection(collectionRef: ref).within(
            center: center, radius: rad, field: 'position', strictMode: true);
      });
    } catch (e) {
      print(e);
    }
  }

标签: firebaseflutterdartgoogle-cloud-firestore

解决方案


推荐阅读