Pular para o conteúdo principal

label_in_outer_scope

Detalhes sobre o diagnóstico 'label_in_outer_scope' produzido pelo analisador do Dart.

Can't reference label '{0}' declared in an outer method.

Descrição

#

O analisador gera este diagnóstico quando uma instrução break ou continue referencia um rótulo declarado em um método ou função que contém a função onde a instrução break ou continue aparece. As instruções break e continue não podem ser usadas para transferir o controle para fora da função que as contém.

Exemplo

#

O código a seguir gera este diagnóstico porque o rótulo loop é declarado fora da função local g:

dart
void f() {
  loop:
  while (true) {
    void g() {
      break loop;
    }
​
    g();
  }
}

Correções comuns

#

Tente reescrever o código para que não seja necessário transferir o controle para fora da função local, possivelmente incorporando a função local no código (inlining):

dart
void f() {
  loop:
  while (true) {
    break loop;
  }
}

Se isso não for possível, tente reescrever a função local para que um valor retornado por ela possa determinar se o controle será transferido:

dart
void f() {
  loop:
  while (true) {
    bool g() {
      return true;
    }
​
    if (g()) {
      break loop;
    }
  }
}

Encontrou essa página sem tradução ou que precisa de correção? Abra uma issue e nos ajude a manter esse site em PT-BR para ajudar pessoas como você.