Передача переменной в виджет Flutter, который расширяет другой класс - PullRequest
0 голосов
/ 28 февраля 2019

Я использую плагин fluter_google_places Flutter.Я пытаюсь передать функцию обратного вызова в виджет, чтобы при нажатии на место вызывалась функция обратного вызова:

class GooglePlaces extends PlacesAutocompleteWidget {
    final Function callback;

    GooglePlaces(this.callback)
        : super(
            apiKey: kGoogleApiKey,
            sessionToken: Uuid().generateV4(),
            language: "en",
            );

    @override
    _GooglePlaces createState() => _GooglePlacesState();
    }

    class _GooglePlacesState extends PlacesAutocompleteState {
    final GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>();

    void startSearch() async {
        Prediction p = await PlacesAutocomplete.show(
        context: context,
        apiKey: kGoogleApiKey,
        mode: Mode.overlay,
        language: "en",
        );

        displayPrediction(p);
    }

    Future<Null> displayPrediction(Prediction p) async {
        if (p != null) {
            widget.callback(); // Call callback function
        }
    }
}

Создание виджета в другом файле:

void myCallback() {
    // ...
}

GooglePlaces(myCallback);

Однако widget.callback(); отображает ошибку: метод 'обратный вызов' не определен для класса 'PlacesAutocompleteWidget'

Как вызвать функцию обратного вызова из виджета?

1 Ответ

0 голосов
/ 28 февраля 2019

Вы сталкиваетесь с этой ошибкой, потому что class _GooglePlacesState extends PlacesAutocompleteState не State<GooglePlaces>.Так что widget.callback() относится к состоянию PlacesAutocompleteWidget.

Здесь есть два решения:

1) Дешевый выход:

Передача обратного вызова в состояние, какИтак: _GooglePlaces createState() => _GooglePlacesState(callback);

и добавьте обратный вызов в конструктор состояний.

2) (Как указано выше) Измените _GooglePlacesState, чтобы расширить State<GooglePlaces>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...