我做了一个无人机应用程序。我从flutter开发应用程序。但我新学会了flutter。我的目的是使用firebase实时和flutter_map和看到无人机的位置。但我没有解决这个错误。请帮助我项目代码;
import 'package:google_fonts/google_fonts.dart';
import 'package:firebase_storage/firebase_storage.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:droneapps/crud.dart';
import 'package:firebase_database/firebase_database.dart';
import 'package:droneapps/main.dart';
import 'package:flutter/material.dart';
import 'package:flutter_map/flutter_map.dart';
import 'package:latlong2/latlong.dart' /* as latLng*/;
class MapWidgetW extends StatefulWidget {
@override
_MyMapState createState() => _MyMapState();
}
class _MyMapState extends State<MapWidgetW> {
late LatLng _currentLocation;
@override
void initState() {
super.initState();
_getCurrentLocation();
}
void _getCurrentLocation() {
final databaseReference = FirebaseDatabase.instance.ref("Location");
databaseReference.child("Location").onValue.listen((DatabaseEvent event) {
setState(() {
_currentLocation =
LatLng(event.snapshot.value["Lat"], event.snapshot.value["Lng"]);
});
});
}
@override
Widget build(BuildContext context) {
return FlutterMap(
options: MapOptions(),
);
}
}
当我改变数值时 在firebase中,我希望将其反映到应用程序中的位置。
2条答案
按热度按时间z31licg01#
你可以得到更好的答案,如果你说你得到的错误,并粘贴构建方法。唯一的想法,我知道你的代码是,initState只运行一次,当页面包含的小部件显示,如果_getCurrentLocation()是不是在构建方法,你的小部件将永远不会更新。我想帮助更多,但我不知道firebase。
sc4hvdpw2#
可能是因为event.snapshot.value[“Lat”]可以为空,而LatLng类示例不为空。您可以通过添加
_currentLocation = LatLng(event.snapshot.value?["Lat"] ?? 0, event.snapshot.value["Lng"] ?? 0);
来修复此问题**??是一个可识别空值的运算符,该表达式表示,如果首选项示例中的event.snapshot.value?[“Lat”]**的值为空值,则将默认值(0)分配给LatLng类。