Page 1 of 1

Durch die Pop-in-Navigation wird der Dialog nicht geschlossen, sondern das übergeordnete Widget wird eingeblendet

Posted: 03 Jan 2025, 17:36
by Guest
Ich drücke einen Dialog und platziere eine Schaltfläche darauf, um den Dialog mit Navigator.of(context).pop() zu schließen. Aber wenn ich die Schaltfläche drücke, wird der Dialog nicht geschlossen, sondern das übergeordnete Widget wird nacheinander geschlossen entsprechend dem Widget-Baum. Es scheint, dass dies nur unter iOS passiert.
Video zur Visualisierung
Im übergeordneten Widget:

Code: Select all

showDialog(
context: context,
builder: (ct) => MyDialog(
)).then((v) {
if (v ?? false) {
myFunc();
}
});
In MyDialog:

Code: Select all

void close() {
Navigator.of(context).pop(false);
}
  • Ich habe versucht, rootNavigator: true als einige Tutorials hinzuzufügen.
  • Ich habe versucht, einen zusätzlichen BuildContext an zu übergeben der Dialog:

Code: Select all

showDialog(
context: context,
builder: (ct) => MyDialog(contx:xt
)).then((v) {
if (v ?? false) {
myFunc();
}
});
und Pop:

Code: Select all

void close() {
Navigator.of(contx).pop(false);
}
Die Dinge scheinen besser zu werden, aber das Problem tritt manchmal wieder auf.