Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.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 颤振对话框_Flutter - Fatal编程技术网

Flutter 颤振对话框

Flutter 颤振对话框,flutter,Flutter,当用户点击对话框外部以关闭它时,问题就出现了。在这种情况下,上述值返回null。如果发生这种情况,我想返回0。我的解决办法是: 设置barrierDismissible:false,我不想这样做 我可以检查value是否为空,并通过单击外部区域推断对话框已被取消 但除此之外,还有没有更好的方法或任何对话框可拒绝侦听器,我可以从中返回Navigator.pop(0),以防通过点击外部区域来取消对话框,类似这样: int value = await _show(); 我不认为你想要的存在。我认

当用户点击对话框外部以关闭它时,问题就出现了。在这种情况下,上述
返回
null
。如果发生这种情况,我想返回
0
。我的解决办法是:

  • 设置
    barrierDismissible:false
    ,我不想这样做
  • 我可以检查
    value
    是否为空,并通过单击外部区域推断对话框已被取消
但除此之外,还有没有更好的方法或任何对话框可拒绝侦听器,我可以从中返回
Navigator.pop(0)
,以防通过点击外部区域来取消对话框,类似这样:

int value = await _show();

我不认为你想要的存在。我认为最接近优雅的期望是:

showDialog(
  context: context,
  onDialogDismissed: () {
    Navigator.pop(0);
  }
);
Future\u show()异步{
返回等待显示对话框(
上下文:上下文,
建筑商:(){
返回警报对话框(
行动:[
升起的按钮(
onPressed:()=>Navigator.pop(上下文,1),//返回1
子项:文本('1'),
),
升起的按钮(
onPressed:()=>Navigator.pop(上下文,2),//返回2
子项:文本('2'),
),
],
);
},
) ?? 0;
}
showDialog(
  context: context,
  onDialogDismissed: () {
    Navigator.pop(0);
  }
);
Future<int> _show() async {
  return await showDialog<int>(
    context: context,
    builder: (_) {
      return AlertDialog(
        actions: [
          RaisedButton(
            onPressed: () => Navigator.pop(context, 1), // returning 1
            child: Text('1'),
          ),
          RaisedButton(
            onPressed: () => Navigator.pop(context, 2), // returning 2
            child: Text('2'),
          ),
        ],
      );
    },
  ) ?? 0;
}