【发布时间】:2020-05-14 11:15:30
【问题描述】:
我有一个main.dart 文件,我正在其中构建一个HomePage(),其中包含一个抽屉、列表图块和一张地图。我已经在另一个 dart 文件中实现了 google maps 插件(参见下面的代码),我只是在 HomePage() 的脚手架主体中调用 MapPage()。
现在,当我通过调用函数goToLoyola() 按下抽屉中的一个列表图块时,我需要为相机设置动画,所以我的问题是,如何从HomePage() 访问此函数?
对不起,我觉得我的问题很糟糕,但我是新手,还在学习颤振。谢谢你。
class MapPage extends StatefulWidget {
@override
_MapPageState createState() => _MapPageState();
}
class _MapPageState extends State<MapPage> {
GoogleMapController _controller;
LatLng _currentLocation;
CameraPosition _initialCameraLocation;
StreamSubscription _locationSubscription;
Location _location = new Location();
String error;
goToLoyola() {
_controller.animateCamera(CameraUpdate.newCameraPosition(_loyolaCampus));
}
@override
void initState() {
super.initState();
initPlatformState();
_locationSubscription =
_location.onLocationChanged().listen((newLocalData) {
setState(() {
_currentLocation =
LatLng(newLocalData.latitude, newLocalData.longitude);
_initialCameraLocation = CameraPosition(
target: _currentLocation,
zoom: CAMERA_ZOOM,
tilt: CAMERA_TILT,
bearing: CAMERA_BEARING,
);
});
});
}
@override
void dispose() {
if (_locationSubscription != null) {
_locationSubscription.cancel();
}
super.dispose();
}
@override
Widget build(BuildContext context) {
while (_initialCameraLocation == null) {
return Text("Loading Map");
}
return GoogleMap(
myLocationEnabled: true,
myLocationButtonEnabled: true,
compassEnabled: false,
tiltGesturesEnabled: true,
mapType: MapType.normal,
indoorViewEnabled: true,
trafficEnabled: false,
initialCameraPosition: _initialCameraLocation,
onMapCreated: (GoogleMapController controller) {
_controller = controller;
});
}
【问题讨论】: