为什么我不能将这些计算调用到我的构建中,而我已经为另一个函数做了这些计算



var _distancebetween导致此处出现问题。我不知道如何在我的小工具Build:中调用它

void _onCameraMove(CameraPosition cameraPosition) async {

var _distancebetween = await Geolocator().distanceBetween(
lat, lng, _lastMapPosition.latitude, _lastMapPosition.longitude);

_lastMapPosition = cameraPosition.target;
var latlnglastPosition = _lastMapPosition.toString;
setState(() {
latlnglastPosition;
_distancebetween;
_lastMapPosition;
});
}

当我为_latlinglastPosition和_lastMapPosition设置State时,我在构建中这样调用它们:

@override
Widget build(BuildContext context) {
var latlnglastPosition = _lastMapPosition.toString();

并且我可以很容易地在墨迹响应字段中显示文本。

为什么这不适用于_dinstancetweetFinal?

在我的构建中:

var _distancebetweenFinal = _distancebetween.toString();
print(_distancebetweenFinal);
print(_distancebetween);

这会打印零。。。但是,如果从我的void _onCamerMove打印,它将打印正确的值。如何将值从_onCamerMove传递到我的小部件构建中?

在initState中声明_onCameraMove()可以工作,如下所示:

@override
void initState() { 
super.initState();
_onCameraMove();
}

确保你的课程是Statefull,并在build method之前调用initState

最新更新