作为Abbas.M的建议,我正在使用FutureBuilder Widget解决我的问题。
FutureBuilder窗口小部件:https://www.youtube.com/watch?v
= ek8ZPdWj4Qo
我在声明_future变量
Future<Position> _future;
我在initState中调用异步方法
void initState() {// TODO: implement initStatesuper.initState();_future = getCurrentLocation();}使用FutureBuilder小部件,我解决了我的问题,并将异步函数返回值传递给FutureBuilder小部件的参数。
此条件if(snapshot.connectionState ==
ConnectionState.done)有助于查找异步函数是否已完成并返回值。如果处于完成状态,则表示函数已完成并返回。
如果不满足该条件,则意味着异步功能未完成,因此我正在使用CircularProgressIndicator小部件来通知用户了解应用程序正在加载。
Widget build(BuildContext context) {return Scaffold( appBar: AppBar( title: Text("Flutter Krish"), ), body: FutureBuilder( future: _future, builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.done) { if (!snapshot.hasError) { print(snapshot.data.latitude); return Stack(children: <Widget>[ GoogleMap( initialCameraPosition: CameraPosition(target: LatLng( snapshot.data.latitude, snapshot.data.longitude),zoom: 12.0), onMapCreated: mapCreated, ), Positioned( top: 30.0, left: 15.0, right: 15.0, child: Container( height: 50.0, width: double.infinity, decoration: BoxDecoration( borderRadius: BorderRadius.circular(10.0), color: Colors.white), child: TextField(decoration: InputDecoration( border: InputBorder.none, hintText: 'Enter Address', contentPadding: EdgeInsets.only(top: 15.0, left: 15.0), suffixIcon: IconButton( icon: Icon(Icons.search), onPressed: searchAndNavigate, iconSize: 30.0, )),onChanged: (value) { searchAddress = value;}, ), ), ), ]); } } else { return Center(child: CircularProgressIndicator()); } }));}Future<Position> getCurrentLocation() async{var answer = await Geolocator().getCurrentPosition();return answer;}


