使用Flutter/Dart。
我有一个功能,以获得全球定位系统的位置,从一个浮动的行动按钮调用。
floatingActionButton: FloatingActionButton(
onPressed: _getCurrentLocation,
child: const Icon(Icons.add),
),
Position? _position;
void _getCurrentLocation() async {
Position position = await _determinePosition();
setState(() {
_position = position;
var lat = position.latitude.toString();
var long = position.longitude.toString();
print("New Lat: $lat");
print("New Long: $long");
});
}
这是工作正常,但我想重新使用变量lat和long以外的这个函数在一个不同的函数或小部件在同一个页面上,也可能在另一个页面上。
我的理解是setState不是我需要的,因为它用于在检测时更改屏幕设计。
我需要更新的变量是能够通过PHP服务器POST它们以从数据库获取数据。
这是我在函数外尝试的,但变量是空的。
async {
try {
var response = await http
.post(Uri.parse("https://www.sample.com/sample.php"), body: {
"latitude": lat,
"longitude": long,
});
print(response.body);
} catch (e) {
print(e);
}
}
谢谢
1条答案
按热度按时间x4shl7ld1#
你可以创建一个支持流控制器的类,你可以通过它们设置和获取数据。
https://api.flutter.dev/flutter/dart-async/StreamController-class.html
非常容易实现,您也可以使用RxDart,或者使用阻塞或提供程序状态管理