У меня есть файл main.dart
, в котором я создаю HomePage()
с ящиком, списком плиток и картой. Я реализовал плагин Google Maps в другом файле дротика (см. Код ниже), и я просто вызываю MapPage()
в теле моего скаффолда в HomePage()
.
Теперь мне нужно анимировать камеру, когда я нажимаю на одну из плиток списка в своем ящике, вызывая функцию 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;
});
}