use_ build_ context_ synchronously
Saiba mais sobre a regra de lint use_build_context_synchronously.
Não use BuildContext através de lacunas assíncronas.
Detalhes
#NÃO use BuildContext através de lacunas assíncronas.
Armazenar um BuildContext para uso posterior pode facilmente levar a travamentos difíceis de diagnosticar. Lacunas assíncronas armazenam implicitamente o
BuildContext e estão entre as coisas mais fáceis de passar despercebidas ao escrever código.
Quando um BuildContext é usado, a propriedade mounted deve ser verificada após uma lacuna assíncrona, dependendo de como o
BuildContext é acessado:
-
Ao usar a propriedade
contextde umState, a propriedademounteddoStatedeve ser verificada. -
Para outras instâncias de
BuildContext(como uma variável local ou um argumento de função), a propriedademounteddoBuildContextdeve ser verificada.
RUIM:
void onButtonTapped(BuildContext context) async {
await Future.delayed(const Duration(seconds: 1));
Navigator.of(context).pop();
}
BOM:
void onButtonTapped(BuildContext context) {
Navigator.of(context).pop();
}
BOM:
void onButtonTapped(BuildContext context) async {
await Future.delayed(const Duration(seconds: 1));
if (!context.mounted) return;
Navigator.of(context).pop();
}
BOM:
abstract class MyState extends State<MyWidget> {
void foo() async {
await Future.delayed(const Duration(seconds: 1));
if (!mounted) return; // Checks `this.mounted`, not `context.mounted`.
Navigator.of(context).pop();
}
}
Ativar
#
Para ativar a regra use_build_context_synchronously, adicione use_build_context_synchronously
em
linter > rules no seu arquivo analysis_options.yaml:
linter:
rules:
- use_build_context_synchronously
Se você usa a sintaxe de mapa YAML para configurar as regras de lint,
adicione use_build_context_synchronously: true em linter > rules:
linter:
rules:
use_build_context_synchronously: true
Salvo indicação em contrário, a documentação neste site reflete Dart 3.13.7. Relatar um problema.
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ê.