作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这段代码:
child: CircleAvatar(
radius: 18,
backgroundColor: Colors.white70,
child: IconButton(
icon: Icon(Icons.camera_alt_outlined),
onPressed: () => selectPhoto(),
),
)
当按下图标时,我想要一个带有几个选项的简单对话框,所以我写了这个:
selectPhoto() {
return SimpleDialog(
title: const Text('Create Post'),
children: <Widget>[
SimpleDialogOption(...),
SimpleDialogOption(...),
SimpleDialogOption(...)
],
);
}
但是当我尝试运行应用程序时,什么也没有发生。我做错了什么?怎么解决?类型
最佳答案
你的函数的返回值没有被任何东西使用。在 onPressed
中返回 SimpleDialog
是没有用的。 onPressed 函数会被 Widget 调用,所以给它一个返回值是没有用的。
按照 documentation ,你的函数需要调用showDialog
方法:
selectPhoto
功能:await showDialog(
context: context,
builder: (BuildContext context) {
return SimpleDialog(
title: const Text('Create Post'),
children: <Widget>[
SimpleDialogOption(...),
SimpleDialogOption(...),
SimpleDialogOption(...)
],
);
})
showDialog方法显示您创建的对话框。如果需要,可以将结果存储在其返回值中:
var result = await showDialog(
[...]
这样您可以检查按下了哪个选项。如果用户取消对话框(例如,通过点击 Android 上的后退按钮,或点击对话框后面的掩码),则 future 将以 null 值结束。
您可以在此答案中链接的 Flutter 文档中阅读更多示例。
关于 flutter :IconButton onPressed 不适用于 SimpleDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69452569/
我是一名优秀的程序员,十分优秀!