firebase - 使用 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);
}
}
解决方案
推荐阅读
- javascript - 在ajax(请求)中循环仅第一个结果有效
- java - 从 Java 代码中检索变量并分配给 TestNG 作为参数
- javascript - material-ui 用 useStyles / jss 覆盖主题
- php - How foreach in two table with php
- html - 在引导程序中将 2 个 DIV 相互对齐
- java - 调用HSQLDB jar中DatabaseManagerSwing类的main方法后如何获取窗口关闭事件?
- c# - 如何从二维数组创建和写入图像?
- java - 如何为每个请求项创建多个线程
- vue.js - 在 Vue 中完全重新加载 div?
- javascript - 从单独的 url 反向链接自动滚动到主页(根)页面的特定部分