Я только начал создавать приложение погоды во Flutter и столкнулся с проблемой, что получение и отображение местоположения пользователя в виде текстового виджета требует 2 нажатий кнопки FlatButton. Я хочу сделать так, чтобы пользователи только нажимали местоположение FlatButton один раз, чтобы текст обновлялся в соответствии с их текущим местоположением. Вот мой код (я вырезал ненужные детали + шаблонный код):
class _ClimaState extends State<Clima> {
Position position;
List<Placemark> placemark;
String location;
void getLocation() async {
position = await Geolocator()
.getCurrentPosition(desiredAccuracy: LocationAccuracy.lowest);
placemark = await Geolocator()
.placemarkFromCoordinates(position.latitude, position.longitude);
location = placemark[0].locality + ", " + placemark[0].country;
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Padding(
padding: const EdgeInsets.all(25.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
//I've left out the other children for now
//This is where I want the user's location to be displayed after they tap the location icon
Text(
placemark != null ? location : "Tap the location icon...",
style: TextStyle(
color: Colors.white,
fontSize: 20,
fontWeight: FontWeight.w800,
),
//This is the location icon
Padding(
padding: const EdgeInsets.only(top: 100.0),
child: FlatButton(
child: Icon(
Icons.my_location,
color: Colors.white,
),
color: Colors.transparent,
onPressed: () {
setState(() {
getLocation();
});
},
),
),
),
],
),
),
),
),
);
}
}