Flutter - метод then был вызван на нуль - PullRequest
0 голосов
/ 15 января 2020

У меня есть проект флаттера с 2 функциями:

Future<dynamic> eval(String js) =>
  controller?.evaluateJavascript(js)?.catchError((_) => '');

void _getBottomPosition() async {
    final evals = await Future.wait([
        eval("(window.innerHeight + window.scrollY) >= document.body.offsetHeight"),
    ]);
    String bottmPosition = evals[0].toString() ?? '';
    isBottomPosition = bottmPosition;
    print("bottomPosition: " + isBottomPosition);
}

Я получаю следующую ошибку:

E/flutter (14430): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: NoSuchMethodError: The method 'then' was called on null.
E/flutter (14430): Receiver: null
E/flutter (14430): Tried calling: then<Null>(Closure: (dynamic) => Null, onError: Closure: (dynamic, StackTrace) => Null)

Может кто-нибудь помочь мне решить эту проблему?

Спасибо.

1 Ответ

1 голос
/ 15 января 2020

Вы должны попробовать это:

Future<dynamic> eval(String js) async =>
  controller?.evaluateJavascript(js)?.catchError((_) => '');

void _getBottomPosition() async {
    final eval = await eval("(window.innerHeight + window.scrollY) >= document.body.offsetHeight");
    String bottmPosition = eval.toString() ?? '';
    isBottomPosition = bottmPosition;
    print("bottomPosition: " + isBottomPosition);
}

Сначала добавьте ключевое слово async к методу eval, затем обновите eval, вызовите _getBottomPosition.

...