【发布时间】:2018-12-20 13:59:09
【问题描述】:
我关注 https://codingwithjoe.com/flutter-navigation-how-to-prevent-navigation/ 显示 AlertDialog 但有两个错误:
- 当点击离开对话框时(关闭屏障而不点击任何按钮)出现运行时错误:
Dart Error: Unhandled exception:Failed assertion: boolean expression must not be null
2。 child: new 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<…>
谢谢!
【问题讨论】:
-
“布尔表达式不能为空”信息不足。堆栈跟踪显示了导致此异常的位置。
-
@GünterZöchbauer 添加
-
child已弃用 - 建议改用builder。但没关系 - 我已经尝试过你的代码 - 一切正常。也许问题不在_exitApp方法中? -
@AndreyTurkovsky感谢您的回复!尝试从对话框中点击(不在对话框中的任何地方)。这给出了飞镖错误