Como eu resolveria esse warning? Tentei seguir o que a documentação indica porém não funcionou.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Como eu resolveria esse warning? Tentei seguir o que a documentação indica porém não funcionou.
Olá, Rafael.
Tudo bem?
O warning "Don't use 'BuildContext's across async gaps" geralmente ocorre quando você está utilizando um BuildContext que não é válido em determinado contexto assíncrono. Isso pode acontecer, por exemplo, se você estiver tentando usar o BuildContext em uma função assíncrona ou dentro de um callback de uma operação assíncrona.
Para resolver esse problema, você pode tentar seguir algumas práticas recomendadas:
Evite usar BuildContext diretamente em funções assíncronas: Em funções assíncronas, o contexto pode mudar e causar esse warning. Tente evitar o uso direto de BuildContext dentro de funções assíncronas.
Use BuildContext apenas quando necessário: Se você precisar passar o BuildContext para uma função assíncrona, tente minimizar o uso direto do BuildContext e use apenas onde for estritamente necessário.
Use BuildContext local dentro da função: Se estiver trabalhando com uma função assíncrona, evite capturar o BuildContext de fora da função. Em vez disso, obtenha o BuildContext localmente dentro da função. Você pode fazer isso usando Builder ou outra abordagem para obter o BuildContext correto.
Aqui está um exemplo de como você pode refatorar sua função para tentar evitar esse warning:
import 'package:flutter/material.dart';
Future<dynamic> showDialogBox({
String title = 'Atenção!',
String content = 'Você deseja realmente executar essa operação?',
String affirmativeOption = 'Confirmar',
}) async {
// Obtenha o BuildContext localmente dentro da função
BuildContext context = NavigatorKey.currentContext;
return showDialog(
context: context,
builder: (BuildContext builderContext) {
return AlertDialog(
title: Text(title),
content: Text(content),
actions: [
FlatButton(
onPressed: () {
Navigator.pop(builderContext, false);
},
child: Text('Cancelar'),
),
FlatButton(
onPressed: () {
Navigator.pop(builderContext, true);
},
child: Text(affirmativeOption),
),
],
);
},
);
}
Neste exemplo, eu adicionei NavigatorKey.currentContext para obter o BuildContext localmente dentro da função. Certifique-se de que NavigatorKey seja um GlobalKey que você pode configurar no início do seu aplicativo. Isso deve ajudar a resolver o warning relacionado ao uso inadequado do BuildContext em contextos assíncronos.
Espero ter ajudado. Qualquer dúvida manda aqui. Valeu.