Вы пытаетесь получить доступ к широте до завершения вызова asyn c. Вы вызываете его на initState()
, но метод завершается, вероятно, после выполнения функции build()
, поэтому при попытке создать виджет Text('Latitude: ${locationData.latitude}')
переменная locationData
равна null
. Быстрое решение состоит в том, чтобы установить значение по умолчанию locationData
, но если вы хотите «дождаться» окончания метода retrieveLocation()
, вы можете:
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.post.data["wastedate"])
),
body: Center(
child: Container(
child: Column(
children: <Widget> [
Image.network(widget.post.data["image"]),
Text(widget.post.data["wastedate"]),
Text(widget.post.data["wastenumber"]),
locationData!=null? Text('Latitude: ${locationData.latitude}') : Text('Waiting Latitude'),
locationData!=null? Text('Longitude: ${locationData.longitude}') : Text('Waiting Longitude'),
]
)
)
),
);
}