【发布时间】:2021-12-19 04:38:43
【问题描述】:
我这周开始学习 Flutter。我正在尝试使用 Geolocator 包获取设备的位置,但我不习惯异步功能。我想在 AppBar 标题的文本中使用 position.latitude。我在代码中写了以显示正确的位置。下面是我的代码。
class HomeScreen extends StatelessWidget {
const HomeScreen({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: buildAppBar(context),
);
}
AppBar buildAppBar(context) {
var position = null;
getCurrentPosition().then((position) => {position = position});
return AppBar(
centerTitle: true,
backgroundColor: kPrimaryColor,
elevation: 0,
toolbarHeight: MediaQuery.of(context).size.height * 0.07,
title: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
IconButton(
icon: const Icon(Icons.place),
iconSize: 15,
onPressed: () {},
),
const Text(<position information goes here>,
style: TextStyle(fontSize: 12)),
],
));
}
Future<Position> getCurrentPosition() async {
Position position = await Geolocator.getCurrentPosition(
desiredAccuracy: LocationAccuracy.high);
return position;
}
}
【问题讨论】:
-
你遇到了什么错误?
-
其实我有想法。您正在使用无状态小部件。因此,如果尝试更改您的文本,它将不会重新加载。除非您使用状态管理,否则您必须使用 Stateful 小部件在发生变化时重新加载屏幕。此外,您必须调用 setState() 来更新页面上的变量。
标签: flutter dart async-await