- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直收到这个错误,我不知道如何修复它,因为昨天相同的代码工作。 (这是一个测试应用程序,它使用谷歌地图和 firebase firestore 来保存和查询 map 上的标记)
我认为这可能与我的 Flutter 安装有关,所以我尝试使用稳定版和 beta 版,但两个版本都出现了相同的错误。
这是错误:
E/flutter (16809): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: NoSuchMethodError: The method '<=' was called on null.
E/flutter (16809): Receiver: null
E/flutter (16809): Tried calling: <=(102.0)
E/flutter (16809): #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
E/flutter (16809): #1 GeoFireCollectionRef.within.<anonymous closure>.<anonymous closure> (package:geoflutterfire/src/collection.dart:125:31)
E/flutter (16809): #2 WhereIterator.moveNext (dart:_internal/iterable.dart:442:13)
E/flutter (16809): #3 new List.from (dart:core-patch/array_patch.dart:50:19)
E/flutter (16809): #4 new List.of (dart:core-patch/array_patch.dart:68:17)
E/flutter (16809): #5 Iterable.toList (dart:core/iterable.dart:404:12)
E/flutter (16809): #6 GeoFireCollectionRef.within.<anonymous closure> (package:geoflutterfire/src/collection.dart:126:16)
E/flutter (16809): #7 _MapStream._handleData (dart:async/stream_pipe.dart:219:31)
E/flutter (16809): #8 _ForwardingStreamSubscription._handleData (dart:async/stream_pipe.dart:157:13)
E/flutter (16809): #9 _rootRunUnary (dart:async/zone.dart:1198:47)
E/flutter (16809): #10 _CustomZone.runUnary (dart:async/zone.dart:1100:19)
E/flutter (16809): #11 _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7)
E/flutter (16809): #12 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:357:11)
E/flutter (16809): #13 _BufferingStreamSubscription._add (dart:async/stream_impl.dart:285:7)
E/flutter (16809): #14 _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:784:19)
E/flutter (16809): #15 _StreamController._add (dart:async/stream_controller.dart:655:7)
E/flutter (16809): #16 _StreamController.add (dart:async/stream_controller.dart:597:5)
E/flutter (16809): #17 CombineLatestStream._buildController.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:rxdart/src/streams/combine_latest.dart:293:30)
E/flutter (16809): #18 _rootRunUnary (dart:async/zone.dart:1198:47)
E/flutter (16809): #19 _CustomZone.runUnary (dart:async/zone.dart:1100:19)
E/flutter (16809): #20 _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7)
E/flutter (16809): #21 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:357:11)
E/flutter (16809): #22 _BufferingStreamSubscription._add (dart:async/stream_impl.dart:285:7)
E/flutter (16809): #23 _ForwardingStreamSubscription._add (dart:async/stream_pipe.dart:127:11)
E/flutter (16809): #24 _MapStream._handleData (dart:async/stream_pipe.dart:224:10)
E/flutter (16809): #25 _ForwardingStreamSubscription._handleData (dart:async/stream_pipe.dart:157:13)
E/flutter (16809): #26 _rootRunUnary (dart:async/zone.dart:1198:47)
E/flutter (16809): #27 _CustomZone.runUnary (dart:async/zone.dart:1100:19)
E/flutter (16809): #28 _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7)
E/flutter (16809): #29 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:357:11)
E/flutter (16809): #30 _BufferingStreamSubscription._add (dart:async/stream_impl.dart:285:7)
E/flutter (16809): #31 _ForwardingStreamSubscription._add (dart:async/stream_pipe.dart:127:11)
E/flutter (16809): #32 _MapStream._handleData (dart:async/stream_pipe.dart:224:10)
E/flutter (16809): #33 _ForwardingStreamSubscription._handleData (dart:async/stream_pipe.dart:157:13)
E/flutter (16809): #34 _rootRunUnary (dart:async/zone.dart:1198:47)
E/flutter (16809): #35 _CustomZone.runUnary (dart:async/zone.dart:1100:19)
E/flutter (16809): #36 _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7)
E/flutter (16809): #37 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:357:11)
E/flutter (16809): #38 _DelayedData.perform (dart:async/stream_impl.dart:611:14)
E/flutter (16809): #39 _StreamImplEvents.handleNext (dart:async/stream_impl.dart:730:11)
E/flutter (16809): #40 _PendingEvents.schedule.<anonymous closure> (dart:async/stream_impl.dart:687:7)
E/flutter (16809): #41 _rootRun (dart:async/zone.dart:1182:47)
E/flutter (16809): #42 _CustomZone.run (dart:async/zone.dart:1093:19)
E/flutter (16809): #43 _CustomZone.runGuarded (dart:async/zone.dart:997:7)
E/flutter (16809): #44 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1037:23)
E/flutter (16809): #45 _rootRun (dart:async/zone.dart:1190:13)
E/flutter (16809): #46 _CustomZone.run (dart:async/zone.dart:1093:19)
E/flutter (16809): #47 _CustomZone.runGuarded (dart:async/zone.dart:997:7)
E/flutter (16809): #48 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1037:23)
E/flutter (16809): #49 _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
E/flutter (16809): #50 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
E/flutter (16809):
这是我的 main.dart 文件:
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:geoflutterfire/geoflutterfire.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'dart:async';
import 'package:permission_handler/permission_handler.dart';
import 'package:awesome_dialog/awesome_dialog.dart';
import 'package:rxdart/rxdart.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
// This is the theme of your application.
//
// Try running your application with "flutter run". You'll see the
// application has a blue toolbar. Then, without quitting the app, try
// changing the primarySwatch below to Colors.green and then invoke
// "hot reload" (press "r" in the console where you ran "flutter run",
// or simply save your changes to "hot reload" in a Flutter IDE).
// Notice that the counter didn't reset back to zero; the application
// is not restarted.
primarySwatch: Colors.blue,
// This makes the visual density adapt to the platform that you run
// the app on. For desktop platforms, the controls will be smaller and
// closer together (more dense) than on mobile platforms.
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: FireMap(),
);
}
}
class FireMap extends StatefulWidget {
@override
_FireMapState createState() => _FireMapState();
}
class _FireMapState extends State<FireMap> {
Firestore firestore = Firestore.instance;
Geoflutterfire geo = Geoflutterfire();
GoogleMapController _mapController;
Map<MarkerId, Marker> markers =
<MarkerId, Marker>{}; // CLASS MEMBER, MAP OF MARKS
BehaviorSubject<double> radius = BehaviorSubject.seeded(100.0);
Stream<dynamic> query;
StreamSubscription subscription;
Future<DocumentReference> _addGeoPoint(LatLng coordinates) async {
GeoFirePoint point = geo.point(
latitude: coordinates.latitude, longitude: coordinates.longitude);
return firestore
.collection('locations')
.add({'position': point.data, 'name': 'Yay I can be queried!'});
}
void _add() {
// var markerIdVal = MyWayToGenerateId();
var markerIdVal = '123abc';
final MarkerId markerId = MarkerId(markerIdVal);
// creating a new MARKER
final Marker marker = Marker(
markerId: markerId,
position: LatLng(24.150, -110.32
// center.latitude + sin(_markerIdCounter * pi / 6.0) / 20.0,
// center.longitude + cos(_markerIdCounter * pi / 6.0) / 20.0,
),
infoWindow: InfoWindow(
title: markerIdVal,
snippet: '*',
onTap: () {
_onInfoWindowTapped(markerId);
}),
onTap: () {
_onMarkerTapped(markerId);
},
draggable: true,
);
setState(() {
// adding a new marker to map
markers[markerId] = marker;
});
}
void _addMarkerAtPosition(LatLng coordinates) {
_addGeoPoint(coordinates);
// var markerIdVal = MyWayToGenerateId();
var markerIdVal = coordinates.toString();
final MarkerId markerId = MarkerId(markerIdVal);
// creating a new MARKER
final Marker marker = Marker(
markerId: markerId,
position: coordinates,
infoWindow: InfoWindow(
title: markerIdVal,
snippet: '*',
onTap: () {
_onInfoWindowTapped(markerId);
}),
onTap: () {
_onMarkerTapped(markerId);
},
);
setState(() {
// adding a new marker to map
markers[markerId] = marker;
});
}
void _onMarkerTapped(markerId) {
print('MARKER TAPPED');
}
void _onInfoWindowTapped(MarkerId markerId) {
print('MARKER INFO WINDOW TAPPED');
//TODO SHOW INFO PANEL
AwesomeDialog(
context: context,
dialogType: DialogType.NO_HEADER,
title: markerId.value,
desc: 'desc',
)..show();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
children: <Widget>[
GoogleMap(
initialCameraPosition:
CameraPosition(target: LatLng(24.150, -110.32), zoom: 10),
myLocationEnabled: true,
mapType: MapType.hybrid,
markers: Set<Marker>.of(markers.values),
onMapCreated: _onMapCreated,
onTap: _onTap,
),
Positioned(
bottom: 100,
right: 0,
child: FlatButton(
shape: CircleBorder(),
child: Padding(
child: Icon(
Icons.pin_drop,
color: Colors.white,
),
padding: EdgeInsets.all(8.0),
),
color: Colors.green,
// onPressed: () => _add(),
),
),
Positioned(
bottom: 50,
left: 10,
child: Slider(
min: 100.0,
max: 500.0,
divisions: 4,
value: radius.value,
label: 'Radius ${radius.value}km',
activeColor: Colors.green,
inactiveColor: Colors.green.withOpacity(0.2),
onChanged: _updateQuery,
),
)
],
),
floatingActionButton: FloatingActionButton(
onPressed: (){
// _mapController.animateCamera(CameraUpdate.zoomOut());
subscription.cancel();
_startQuery();
},
child: Icon(Icons.zoom_out),
),
);
}
void _updateMarkers(List<DocumentSnapshot> documentList) {
print(documentList);
markers.clear();
setState(() {
documentList.forEach((DocumentSnapshot document) {
GeoPoint pos = document.data['position']['geopoint'];
double distance = document.data['distance'];
final MarkerId markerId =
MarkerId(pos.latitude.toString() + '--' + pos.longitude.toString());
var marker = Marker(
markerId: markerId,
position: LatLng(pos.latitude, pos.longitude),
icon: BitmapDescriptor.defaultMarker,
infoWindow: InfoWindow(
title: markerId.value,
snippet: '$distance kilometers from query center',
onTap: () {
_onInfoWindowTapped(markerId);
}));
markers[markerId] = marker;
});
});
}
_startQuery() async {
double screenWidth = MediaQuery.of(context).size.width;
double screenHeight = MediaQuery.of(context).size.height;
screenWidth *= MediaQuery.of(context).devicePixelRatio;
screenHeight *= MediaQuery.of(context).devicePixelRatio;
double middleX = screenWidth / 2;
double middleY = screenHeight / 2;
var pos = await _mapController
.getLatLng(ScreenCoordinate(x: middleX.round(), y: middleY.round()));
// var pos = LatLng(24.150, -110.32);
double lat = pos.latitude;
double lng = pos.longitude;
print('getLatLng Position: ' + pos.toString());
var ref = firestore.collection('locations');
GeoFirePoint center = geo.point(latitude: lat, longitude: lng);
_mapController.animateCamera(CameraUpdate.newLatLng(pos));
subscription = radius.switchMap((rad) {
return geo.collection(collectionRef: ref).within(
center: center, radius: rad, field: 'position', strictMode: true);
}).listen(_updateMarkers);
}
_updateQuery(value) {
setState(() {
radius.add(value);
});
}
void _onMapCreated(GoogleMapController controller) async {
setState(() {
_mapController = controller;
});
if (await Permission.location.request().isGranted) {
print('PERMISSION GRANTED: LOCATION');
}
_startQuery();
}
void _onTap(coordinates) {
// _addMarkerAtPosition(coordinates);
_addGeoPoint(coordinates);
_mapController.animateCamera(CameraUpdate.newLatLng(coordinates));
}
@override
void dispose() {
subscription.cancel();
super.dispose();
}
}
还有我的 pubspec.ymal 文件:
name: googlemapstest
description: Google Maps Test App
# The following line prevents the package from being accidentally published to
# pub.dev using `pub publish`. This is preferred for private packages.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.0.0+1
environment:
sdk: ">=2.7.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.3
google_maps_flutter: ^0.5.28+1
firebase_core: ^0.4.5
firebase_analytics: ^5.0.15
cloud_firestore: ^0.13.7
permission_handler: ^5.0.1+1
awesome_dialog: ^1.1.3
geoflutterfire: ^2.0.3+6
dev_dependencies:
flutter_test:
sdk: flutter
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
# The following section is specific to Flutter.
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
感谢您的帮助!
最佳答案
您可能没有正确创建对象。
检查这种类型的声明:
Foo obj; // wronge way of creating object
obj.method();
并改成这个
Foo obj = Foo(); // Corret way of creating object
obj.method();
或者
Foo obj = new Foo(); // Corret way of creating object
obj.method();
PS:
new
关键字现在在 Dart 中是可选的。
关于google-maps - 如何修复 [ERROR :flutter/lib/ui/ui_dart_state. cc(166)] Unhandled Exception : NoSuchMethodError: The method '<=' was called on null. 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62657711/
reqwest v0.9 将 serde v1.0 作为依赖项,因此实现 converting serde_json errors into reqwest error . 在我的代码中,我使用 se
我有这个代码: let file = FileStorage { // ... }; file.write("Test", bytes.as_ref()) .map_err(|e| Mu
我只是尝试用angular-cli创建一个新项目,然后运行服务器,但是它停止并显示一条有趣的消息:Error: No errors。 我以这种方式更新了(希望有帮助):npm uninstall -g
我从我的 javascript 发送交易 Metamask 打开传输对话框 我确定 i get an error message in metamask (inpage.js:1 MetaMask -
这个问题在这里已经有了答案: How do you define custom `Error` types in Rust? (3 个答案) How to get a reference to a
我想知道两者之间有什么大的区别 if let error = error{} vs if error != nil?或者只是人们的不同之处,比如他们如何用代码表达自己? 例如,如果我使用这段代码: u
当我尝试发送超过 50KB 的图像时,我在 Blazor 服务器应用程序上收到以下错误消息 Error: Connection disconnected with error 'Error: Serv
我有一个error-page指令,它将所有异常重定向到错误显示页面 我的web.xml: [...] java.lang.Exception /vi
我有这样的对象: address: { "phone" : 888, "value" : 12 } 在 WHERE 中我需要通过 address.value 查找对象,但是在 SQL 中有函数
每次我尝试编译我的代码时,我都会遇到大量错误。这不是我的代码的问题,因为它在另一台计算机上工作得很好。我尝试重新安装和修复,但这没有帮助。这是整个错误消息: 1>------ Build starte
在我的代码的类部分,如果我写一个错误,则在不应该的情况下,将有几行报告为错误。我将'| error'放在可以从错误中恢复的良好/安全位置,但是我认为它没有使用它。也许它试图在某个地方恢复中间表情? 有
我遇到了 csv 输入文件整体读取故障的问题,我可以通过在 read_csv 函数中添加 "error_bad_lines=False" 来删除这些问题来解决这个问题。 但是我需要报告这些造成问题的文
在 Spring 中,验证后我们在 controller 中得到一个 BindingResult 对象。 很简单,如果我收到验证错误,我想重新显示我的表单,并在每个受影响的字段上方显示错误消息。 因此
我不知道出了什么问题,因为我用 Java 编程了大约一年,从来没有遇到过这个错误。在一分钟前在 Eclipse 中编译和运行工作,现在我得到这个错误: #A fatal error has been
SELECT to_char(messages. TIME, 'YYYY/MM/DD') AS FullDate, to_char(messages. TIME, 'MM/DD
我收到这些错误: AnonymousPath\Anonymized.vb : error BC30037: Character is not valid. AnonymousPath\Anonymiz
我刚刚安装了 gridengine 并在执行 qstat 时出现错误: error: commlib error: got select error (Connection refused) erro
嗨,我正在学习 PHP,我从 CRUD 系统开始,我在 Windows 上安装了 WAMP 服务器,当我运行它时,我收到以下错误消息。 SCREAM: Error suppression ignore
我刚刚开始一个新项目,我正在学习核心数据教程,可以找到:https://www.youtube.com/watch?v=zZJpsszfTHM 我似乎无法弄清楚为什么会抛出此错误。我有一个名为“Exp
当我使用 Jenkins 运行新构建时,出现以下错误: "FilePathY\XXX.cpp : fatal error C1853: 'FilePathZ\XXX.pch' precompiled
我是一名优秀的程序员,十分优秀!