getter error while using Geofire to query

為{幸葍}努か 提交于 2020-07-03 12:59:06

问题


I am trying to query database using geoflutterfire. Everything seems to work well but when i query, i get this error: The latitude and longitudes are gotten programmatically from geolocator plugin, yet flutter throws the error below.

 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)

Could someone explain what the problem is? All my coordinates are correctly acquired and stored on firestore.

The query was called on initState and it gave the above error and don't produce any result on the google Map

 _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);
    }
  }

来源:https://stackoverflow.com/questions/62668759/getter-error-while-using-geofire-to-query

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!