google-maps - 在初始化器中只能访问静态成员 - 完成器(与谷歌地图一起颤抖)
问题描述
将地图控制器传递给我的自定义小部件时遇到错误。如何解决此错误消息?
我已经尝试在 initState(){} 中实例化控制器,但它似乎不起作用。
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
Completer<GoogleMapController> mapController;
LocationData currentLocation;
var location = new Location();
currentLocationCheck() async {...
}
@override
void initState() {
// TODO: implement initState
super.initState();
currentLocationCheck();
mapController = Completer();
}
@override
Widget build(BuildContext context) {
return Scaffold(.....
);
}
错误消息被传递到 List 小部件。然后在 Scaffold Widget 中使用此 List 小部件
List<Widget> customItemList = [
SizedBox(width: 10),
customListItemBox(
photoUrl:
"http://marjsia.com/wp-content/uploads/2013/08/P1100993-1024x683.jpg",
title: "Glorietta 2",
description: "Glorietta 2 J.Co Donuts",
latitude: 14.550664464,
longitude: 121.021833246,
mapController: mapController,
),
];
}
Widget customListItemBox(
{String photoUrl,
String title,
String description,
double latitude,
double longitude,
Completer mapController}) {
return GestureDetector(
onTap: () {
_goToLocation(latitude, longitude, mapController);
},
child: Padding(.....
),
);
}
这是使用控制器的功能
Future<void> _goToLocation(
double latitude, double longitude, Completer mapController) async {
final GoogleMapController controller = await mapController.future;
controller.animateCamera(
CameraUpdate.newCameraPosition(
CameraPosition(
target: LatLng(latitude, longitude),
zoom: 15,
tilt: 50.0,
bearing: 45,
),
),
);
}
解决方案
您可以在 initState() 中初始化 customItemList
class SearchResultsState extends State<Map> {
Completer<GoogleMapController> _controller = Completer();
List<Widget> customItemList = [];
@override
void initState() {
super.initState();
//_controller = Completer();
customItemList = [
SizedBox(width: 10),
customListItemBox(
photoUrl:
"http://marjsia.com/wp-content/uploads/2013/08/P1100993-1024x683.jpg",
title: "Glorietta 2",
description: "Glorietta 2 J.Co Donuts",
latitude: 14.550664464,
longitude: 121.021833246,
mapController: _controller,
),
];
}
推荐阅读
- asp.net - 如何从模块或类 Web 文件访问 Friend 方法
- date - R:条件日期之间的天数
- wcf - 如何在 .NET Core 客户端中接受 WCF 服务的有效私有 CA 根证书?
- angular - Angular - 如何以编程方式初始化新组件?
- javascript - JS numObj.toFixed() 舍入不一致
- r - 保存栅格 - 未针对 PROJ >= 6 更新
- reactjs - 自动完成中 getOptionLable 中的多个选项
- python - 请在 tkinter 按钮中提供帮助
- c++ - 在多线程程序中调用 fork() 会阻塞所有线程吗?
- bitbucket-pipelines - Bitbucket 管道上的“未设置远程主机”错误