Почему я не могу вызвать эти вычисления в своей сборке, когда я уже делаю это для другой функции

#flutter #dart

#flutter #dart

Вопрос:

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

когда я устанавливаю State для _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 в мою сборку виджета?

Ответ №1:

Объявление вашего _onCameraMove() в initState может работать следующим образом:

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

И убедитесь, что вы создали свой класс Statefull и вызываете initState , прежде чем build method

Комментарии:

1. super.initState(); _onCameraMove(); ожидает позиционный аргумент. Расположение камеры Расположение камеры не будет работать. есть идеи? печать нулей по-прежнему без позиционного аргумента

2. ваше положение камеры равно нулю