Flutter Android программно закрывает / закрывает диалоговое окно ProgressHUD без нажатия

#android #ios #flutter

#Android #iOS #flutter

Вопрос:

Я просто заново ввожу и изучаю flutter на Android. Я хочу спросить о диалоговом окне ProgressHUD.

Как я могу закрыть / закрыть диалоговое окно ProgressHUD программно? Потому что в документации он использовал onPress для закрытия диалогового окна. Я хочу программно закрыть или закрыть диалоговое окно без onPress.

Спасибо.

Библиотека / пакет диалогового окна ProgressHUD ссылка ниже:

https://pub.dartlang.org/packages/progress_hud#-readme-tab-

Приведенный ниже код инициирует диалоговое окно:

     bool _loading = true;

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

    _progressHUD = new ProgressHUD(
      backgroundColor: Colors.black12,
      color: Colors.white,
      containerColor: Colors.blue,
      borderRadius: 5.0,
      text: 'Loading...',
    );

    //If I put in this line, there have an error, 
    //the state is null, the dismiss() function called on null.
    _progressHUD.state.dismiss();

  }
  

Вы можете увидеть, что если я введу функцию _progressHUD.state.dismiss(); in initState() , появится ошибка, которая заключается в том, что состояние равно нулю, функция dismiss() вызывается по нулевой ссылке.

Приведенный ниже код используется для закрытия диалогового окна:

 _progressHUD.state.dismiss();
  

Ответ №1:

Вы отклоняете прогресс в состоянии инициализации, когда виджет не полностью собран. Итак, отображается ошибка состояния null. Чтобы использовать его в состоянии инициализации или когда состояние установлено не полностью, вы можете использовать обратный вызов postframe.

         WidgetsBinding.instance.addPostFrameCallback((_) {
          _progressHUD.state.dismiss();
        });