我使用下面的函数检查并显示对话框或底表中的内容,但当执行该函数时无法正常工作,因为它同时显示两个内容,原因是什么?如何解决该问题?
有没有可能为这个函数建议一个更好的名称?
内容功能:
content(BuildContext context, dynamic dialog, dynamic bottomSheet) {
(MediaQuery.of(context).orientation == Orientation.landscape) ? dialog : bottomSheet;
}
执行情况:
ElevatedButton(
child: Text('Button'),
onPressed: () {
content(context, dialog(context), bottomSheet(context));
},
),
如何解决这个问题?
4条答案
按热度按时间ecfdbz9o1#
为了确定屏幕的方向,我们可以使用OrientationBuilder小部件。OrientationBuilder将确定当前的方向,并在方向改变时重建。
以下是截图:
快乐编码...
ep6jt1vc2#
函数不能正常工作的原因是因为您实际上没有显示对话框或底部工作表。要显示对话框或底部工作表,您需要分别调用showDialog或showModalBottomSheet,并将调用dialog或bottomSheet的结果传递给它们。
试试这个
a2mppw5e3#
对于代码的作用,您有一个根本性的误解。
以"实现"和
revealContent
代码为例:您认为
revealContent
会根据屏幕的方向调用dialog
或bottomSheet
,但实际上您同时调用了这两个函数,然后将调用结果传递给revealContent
,revealContent
实际上并没有对它们执行任何操作。您需要做的是将函数作为回调传递给
revealContent
,然后在函数中调用回调:一个二个一个一个
o7jaxewo4#
应该在
revealContent
中调用showDialog
和showModalBottomSheet
。