Как правильно уничтожить локальные потоки, принадлежавшие веб-приложению, работающему на коте, проинструктированном для завершения работу

Вы должны прислушиваться к своему TextEditingController для каждого изменения.

     @override
    void initState() {
      emailController.addListener(setLoginButtonStyle);
      passwordController.addListener(setLoginButtonStyle);
      super.initState();
    }

    @override
    void dispose() {
      emailController.dispose();
      passwordController.dispose();
      super.dispose();
    }

    void setLoginButtonStyle(){
  if(emailController.text != '' && passwordController.text != ''){
    this.loginButtonStyle = buttonPrimary;
    loginDisabled = false;
  } else {
    this.loginButtonStyle = buttonDisabled;
    loginDisabled = true;
  }

   setState(() {
    });
  }

Также вы можете удалить эту строку setLoginButtonStyle (); из вашего build метода

5
задан Eddie 17 March 2009 в 20:28
поделиться

1 ответ

Сервлеты получают событие жизненного цикла при инструктировании для закрытий. Можно использовать это событие для остановки контрольного Потока. Таким образом, когда сервлет запускается, init() метод называют. Когда это останавливается, destroy() метод называют.

Переопределите destroy() метод в Вашем сервлете и остановке поток там.

Когда Вы звоните shutdown.sh целая JVM закрывается. Поскольку JVM останавливается, все потоки (независимо от того, что их состояние) насильственно останавливаются при тихом выполнении. Это - логический эквивалент вызова System.exit(0);

3
ответ дан 14 December 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: