Flutter:从页面A的OnTap()导航到页面B并执行一个特定的函数,该函数在页面B中声明



很抱歉,我是flutter和dart语言的新手,所以我对它的用法并不熟悉。

目前,我有一个来自Page AListTile,它包含信息(纬度和经度(,当点击ListTile中的任何项目时,它应该将该特定项目的信息传递给Page B,并执行在Page B声明的功能(基于从Page A传递的纬度和经度放大谷歌地图(。

我知道从一个页面转到另一个页面,我们可以使用Navigator,但我仍然不知道如何调用函数和传递信息。因此,我希望我能在这方面得到一些指导或帮助

这是我试图在Page B:中调用的函数

_goToLocation(Information information) {
mapController.animateCamera(
CameraUpdate.newCameraPosition(
CameraPosition(
target: LatLng(
double.parse(infomration.latitude),
double.parse(information.longitude),
),
zoom: 18.0,
),
),
);   }

我设法使用以下代码转到Page BPage A,单击ListTile中的任何项目(通过onTap()(都会执行这些代码,但我不确定如何调用Page B中的函数来使用此代码运行。我想知道我是否可以使用以下代码调用该函数?

void navigationToExplore(Information information) async {
await Navigator.push(context, MaterialPageRoute(builder: (context) {
return Explore();
}));
}

提前谢谢。

首先,您需要将数据从屏幕A传递到屏幕B

void navigationToExplore(Information information) async {
await Navigator.push(context, MaterialPageRoute(builder: (context) {
return Explore(
lat : latitude,
long : longitude,
);
}));
}

现在你的屏幕B:-

class Explore extends StatefulWidget {
final double lat;
final double long;
Explore({this.lat, this.long});
@override
_Explore createState() => _Explore();
}
class _Explore extends State<Explore> {
GoogleMapController _controller;
Completer<GoogleMapController> _googleMapCompleter = Completer();
updateCameraPosition(){
LatLng userCoordinates = LatLng(widget.jobData.lat, widget.jobData.long);
CameraPosition cameraPosition = CameraPosition(
target: userCoordinates,
zoom: 15,
);
final GoogleMapController controller = await _googleMapCompleter.future;
controller.animateCamera(CameraUpdate.newCameraPosition(cameraPosition));
}
@override
void initState() {
super.initState();
updateCameraPosition();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: GoogleMap(
mapType: MapType.normal,
initialCameraPosition: CameraPosition(target: LatLng(0, 0)),
myLocationEnabled: true,
onMapCreated: (GoogleMapController controller) async {
_controller = controller;
_googleMapCompleter.complete(_controller);
},
// this wont allow screen scrolling from google maps
gestureRecognizers: Set()
..add(
Factory<EagerGestureRecognizer>(() => EagerGestureRecognizer())),
)
);
}
}

相关内容

  • 没有找到相关文章

最新更新