首页 > 解决方案 > 为什么我不能将这些计算调用到我的构建中,而我已经在为另一个函数做这些计算

问题描述

var _distancebetween 在这里引起了问题。我不知道如何在我的小部件构建中调用它:

 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;
    });
  }

当我为 _latlnglastPosition 和 _lastMapPosition 设置状态时,我在构建中调用它们,如下所示:

  @override
  Widget build(BuildContext context) {

    var latlnglastPosition = _lastMapPosition.toString();
    

我可以轻松地在 Ink Response 字段中显示文本。

为什么这不适用于 _distancebetweenFinal?

在我的构建中:

var _distancebetweenFinal = _distancebetween.toString();

print(_distancebetweenFinal);
print(_distancebetween);

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

标签: flutterdart

解决方案


声明你_onCameraMove()的 initState 可以工作,像这样:

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

并确保你先上课Statefull并打电话initStatebuild method


推荐阅读