Как я могу получить доступ к этому логическому в этом таймере? - PullRequest
0 голосов
/ 10 марта 2020
 GestureDetector(
            onTap: () {
              Timer(Duration(seconds: 10), () {
                bool check =true;
              });
              if (check == true) {
              int details = -10;

Я хочу получить доступ к логической проверке в таймере в операторе if.

1 Ответ

0 голосов
/ 10 марта 2020

У вас проблема с областью, так как вы создаете экземпляр переменной check в функции внутри обратного вызова Timer, и она не будет доступна за пределами этой области.

Вы также можете иметь эту переменная, объявленная в вашем классе и доступ к ней, когда вам это нужно, например:

в классе

bool check;
int details;

GestureDetector(
  onTap: () {
    Timer(Duration(seconds: 10), () {
      setState((){
        check = true;
        details = -10;
      });
    });
  }
)

Или, если вам не нужна проверка переменная вне этой области, вы можете просто полностью удалить ее:

В классе:

int details;

В виджете:

GestureDetector(
  onTap: () {
    Timer(Duration(seconds: 10), () {
      setState((){
        details = -10;
      });
    });
  }
)

Я добавил setState s в обоих примерах, так как кажется, что вы будете обновлять свое представление этими значениями, и оно не будет работать без setState.

...