Ошибки в AlertDialog
Я следую за https://codingwithjoe.com/flutter-navigation-how-to-prevent-navigation/ для шоу AlertDialog, но у меня есть две ошибки:
- При нажатии вне диалогового окна (отменить барьер без нажатия какой-либо кнопки) появляется ошибка времени выполнения:
Dart Error: Unhandled exception:Failed assertion: boolean expression must not be null
2. child: новый AlertDialog("child устарел и не должен использоваться").
Код:
Future<bool> _exitApp(BuildContext context) {
return showDialog(
context: context,
child: new AlertDialog(
title: new Text('Do you want to exit this application?'),
content: new Text('We hate to see you leave...'),
actions: <Widget>[
new FlatButton(
onPressed: () => Navigator.of(context).pop(false),
child: new Text('No'),
),
new FlatButton(
onPressed: () => Navigator.of(context).pop(true),
child: new Text('Yes'),
),
],
),
) ??
false;
}
Трассировки стека:
#0 ModalRoute.willPop (package:flutter/src/widgets/routes.dart)
<asynchronous suspension>
#1 NavigatorState.maybePop (package:flutter/src/widgets/navigator.dart:1783:57)
<asynchronous suspension>
#2 Navigator.maybePop (package:flutter/src/widgets/navigator.dart:1133:34)
#3 BackButton.build.<anonymous closure> (package:flutter/src/material/back_button.dart:91:19)
#4 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:507:14)
#5 _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:562:30)
#6 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24)
#7 TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:242:9)
#8 TapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:204:7)
#9 GestureArenaManager.sweep (package:flutter/src/g<…>
Спасибо!
1 ответ
Сделай свой метод async
и использовать await
ключевое слово:
Future<bool> _exitApp(BuildContext context) async {
return await showDialog( ...
Если вы не хотите закрывать диалог, когда вы нажимаете за пределы контейнера, установите barrierDismissible
ложно.
showDialog(barrierDismissible: false, ...