Элемент экземпляра флаттера '{0}' недоступен с использованием доступа stati c - PullRequest
0 голосов
/ 02 апреля 2020

Я передаю переменные от одного действия к другому во флаттере, но получаю сообщение об ошибке «Элемент экземпляра« широта »не может быть получен с помощью stati c access» Мне нужно, чтобы он был преобразован в этом блоке, чтобы я мог назначить его stati c URL.

class Xsecond extends StatefulWidget {
  final double latitude;
  final double longitude;
  Xsecond(this.latitude, this.longitude, {Key key}): super(key: key);

  @override
  _Xsecond createState() => _Xsecond();
}

class _Xsecond extends State<Xsecond> {
  static String lat = Xsecond.latitude.toString(); // Error: Instance member ‘latitude’ can’t be accessed using static access
  ...

, за которым следует

  ...
  String url = 'https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=${lat},$lng&radius=$radius&type=restaurant&key=$api';
  ...

1 Ответ

0 голосов
/ 02 апреля 2020

В вашем коде и широта, и долгота определены как нестатические c, т. Е. Методы экземпляра. Это означает, что они могут быть вызваны только с использованием экземпляра класса.

class _Xsecond extends State<Xsecond> {
      final xsecond = Xsecond();
      static String lat = xsecond.latitude.toString();
      ...

Пожалуйста, ознакомьтесь с основами любого языка объектно-ориентированного программирования, например, Dart, java, C ++

Однако в вашем В контексте первого класса ваш StatefullWidget. Таким образом, вы можете получить к нему доступ через поле widget вашего класса состояний.

FIX:

class _Xsecond extends State<Xsecond> {
          static String lat = widget.latitude.toString();
          ...
...