【发布时间】:2021-02-06 18:39:11
【问题描述】:
我是新来的颤振并试图创建一个地理位置。 但是,对于我的以下代码,屏幕仅显示“正在加载..请稍候..”并且地图未显示。
我只是想使用依赖项显示当前位置
地理定位器:^6.1.1
使用来自
的代码https://codelabs.developers.google.com/codelabs/google-maps-in-flutter#3
可以成功显示谷歌地图。所以这不是与 Google Maps Platform 相关的问题。
// home.dart
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:geolocator/geolocator.dart';
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
bool mapToggle = false;
var currentLocation;
GoogleMapController mapController;
@override
void initState() {
// TODO: implement initState
super.initState();
Geolocator.getCurrentPosition().then((currloc) {
setState(() {
currentLocation = currloc;
mapToggle = true;
});
});
}
void _onMapCreated(controller) {
setState(() {
mapController = controller;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Home'),
),
body: Column(children: <Widget>[
Stack(
children: <Widget>[
Container(
height: MediaQuery.of(context).size.height - 80.0,
width: double.infinity,
child: mapToggle
? GoogleMap(
onMapCreated: _onMapCreated,
initialCameraPosition: CameraPosition(
target: LatLng(currentLocation.latitude,
currentLocation.longitude),
zoom: 10.0))
: Center(
child: Text(
'Loading.. Please wait..',
style: TextStyle(fontSize: 20.0),
)))
],
)
]),
);
}
}
【问题讨论】:
-
您是否通过在 setState 中打印当前位置的值来验证您实际获得了位置值?原因是您没有请求用户访问其位置的权限。我可能错了,但这将是一个很好的起点。另外,出于定位的目的,我通常使用名为 location 的包,它可以让您请求用户许可,也许 geolocate 也有它...
标签: flutter dart dart-pub google-geolocation