Использование FutureBuilder внутри метода сборки - PullRequest
0 голосов
/ 18 июня 2020

Я использую FutureBuilder внутри моего Build метода, и FutureBuilder продолжает срабатывать снова и снова. Я хочу вызвать FutureBuilder только один раз, пока мой future не будет загружен, а затем вызвать другую функцию, как только это будет сделано. Это моя функция Build -

@override
Widget build(BuildContext context) {
    return FutureBuilder(
      future: parsings(),
      builder:
          (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
        switch (snapshot.connectionState) {
          case ConnectionState.waiting:
            return LoadingState(context);
          default:
            if (snapshot.hasError)
              return new Text(
                  'Error in snapshot: \n${snapshot.error}');
            else {
              return func1();
            }
        }
      },
    );
  }

Как я уже сказал, моя функция Build продолжает строиться снова и снова.

До этого я использовал свой future внутри initState, но из-за этого моя фактическая страница, которую я хотел вернуть, давала нулевые значения до тех пор, пока не был вызван API. Я вообще не хочу видеть нулевые значения, поэтому я хотел использовать FutureBuilder и отображать LoadingState() до тех пор, пока API не будет вызван, а затем показать мою страницу, которая имеет все вызываемые значения и не показывает null значений. Любая помощь будет принята с благодарностью.

EDIT : Подробная проблема, с которой я сталкиваюсь, заключается в том, что функция build вызывается снова и снова, я снова и снова вижу свой LoadingState() , то есть появляется LoadingState(), затем func1(), затем снова LoadingState(), затем func1() и так далее. этот процесс вовсе не останавливается. Кроме того, я не хочу использовать parsings() в initState, потому что при этом, до вызова API, func1() показывает нулевые значения в моих данных, и как только он вызывается, функция сборки меняет свои значения на значения, вызываемые из API. Я не хочу видеть это таким, поэтому я хотел использовать FutureBuilder.

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