Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter AlertDialog中的错误_Flutter_Flutter Layout - Fatal编程技术网

Flutter AlertDialog中的错误

Flutter AlertDialog中的错误,flutter,flutter-layout,Flutter,Flutter Layout,我关注show AlertDialog,但有两个错误: 当点击远离对话框(不点击任何按钮而关闭屏障)时,获取运行时错误: 二,。子项:新建AlertDialog('子项已弃用,不应使用' 代码: Future\u exitApp(构建上下文){ 返回显示对话框( 上下文:上下文, 子:新建警报对话框( 标题:新文本('是否要退出此应用程序?'), 内容:新文本('我们讨厌看到你离开…'), 行动:[ 新扁平按钮( onPressed:()=>Navigator.of(context.pop)(f

我关注show AlertDialog,但有两个错误:

  • 当点击远离对话框(不点击任何按钮而关闭屏障)时,获取运行时错误:
  • 二,。子项:新建AlertDialog('子项已弃用,不应使用'

    代码:

    Future\u exitApp(构建上下文){
    返回显示对话框(
    上下文:上下文,
    子:新建警报对话框(
    标题:新文本('是否要退出此应用程序?'),
    内容:新文本('我们讨厌看到你离开…'),
    行动:[
    新扁平按钮(
    onPressed:()=>Navigator.of(context.pop)(false),
    子项:新文本(“否”),
    ),
    新扁平按钮(
    onPressed:()=>Navigator.of(context.pop)(true),
    子项:新文本(“是”),
    ),
    ],
    ),
    ) ??
    虚假的;
    }
    
    堆栈跟踪:

    #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<…>
    
    #0 ModalRoute.willPop(包:flatter/src/widgets/routes.dart)
    #1 NavigatorState.maybePop(包:flatter/src/widgets/navigator.dart:1783:57)
    #2 Navigator.maybePop(包:flatter/src/widgets/Navigator.dart:1133:34)
    #3 BackButton.build.(包:颤振/src/material/back_按钮。省道:91:19)
    #4 InkResponseState.handleTap(包装:颤振/src/材料/InkWell.省道:507:14)
    #5 _inkResponseEstate.build.(包装:颤振/src/material/ink_井。省道:562:30)
    #6 GestureRecognizer.invokeCallback(包:flatter/src/signatures/recognizer.dart:102:24)
    #7 TapGestureRecognitor.\u检查(软件包:颤振/src/手势/tap.省道:242:9)
    #8 TapGestureRecognizer.AcceptSignature(包:颤振/src/手势/tap.dart:204:7)
    #9 GestureArenaManager.sweep(包装:颤振/src/g
    

    谢谢!

    使您的方法
    异步
    并使用
    等待
    关键字:

    Future<bool> _exitApp(BuildContext context) async {
      return await showDialog(  ...
    

    “布尔表达式不能为null”没有足够的信息。堆栈跟踪显示了此异常的原因。@GünterZöchbauer Added
    child
    已被弃用-建议改用
    builder
    。但没关系-我已经尝试了您的代码-一切正常。可能问题不在
    \u exitApp
    方法中?@Andreyturkovsky感谢您的回复!请尝试点击远离对话框(对话框以外的任何地方)。这会导致dart错误谢谢!原因是什么?如果您检查showDialog的代码,它将返回未来,因此您必须将方法标记为async,并使用wait等待,直到收到对话框的响应。如果您不等待,您将返回null。
    #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<…>
    
    Future<bool> _exitApp(BuildContext context) async {
      return await showDialog(  ...
    
    showDialog(barrierDismissible: false, ...