como atualizar o widget pai após showDialog ser fechado no Flutter?
Nov 29 2020
Eu tenho um widget com um ícone quando clico nele um widget de diálogo é mostrado, aqui está a chamada para o diálogo:
// this icon is in widget parent
IconButton(
icon: Icon(
Icons.info_outline,
size: mobileWidth * 0.07,
),
tooltip: 'information',
color: Colors.blueGrey,
onPressed: () {
showAlertInfo(context, code);
setState(() {});
},
),
aqui está meu diálogo:
showAlertInfo(BuildContext context, String code) {
showDialog(
context: context,
builder: (context) {
return StatefulBuilder(
builder: (context, setState) {
return AlertDialog(
title: Text(
"Information sur le client $code", ),
content: SingleChildScrollView(
child: Container( .....
/* ...
this dialog has some operations that changes info
values of the widget that called this in first place
it is a big code to put here*/
// here I have a close button
actions: [
FlatButton(
child: Text(
"Fermer",
style: TextStyle(
color: Colors.red,
fontSize: mobileWidth * 0.035,
fontWeight: FontWeight.bold,
),
),
onPressed: () {
Navigator.of(context).pop(); // dismiss dialog
},
),
],
);
o que estou tentando alcançar é que, quando a caixa de setState
diálogo é fechada, eu quero que o widget pai seja atualizado, então como chamo o widget pai quando o widget de diálogo é fechado?
Respostas
2 TahaMalik Nov 29 2020 at 06:58
Para função assíncrona
Adicione await
antes showDialog()
e ligue setState((){})
na próxima linha.
await showDialog(
context: context,
builder: (context) {
return yourWidget;
}
);
setState((){});
Para função de sincronização
Use o .then()
retorno de chamada e ligue setState((){})
para ele.
showDialog(
context: context,
builder(context) {
return yourWidget;
}).then((_){
setState((){});
}
);
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
George Harrison ficou chateado por suas letras de 'Hurdy Gurdy Man' de Donovan não terem sido usadas