我正在尝试在Flutter中的onPressed上调用函数。
我尝试过
onPressed: (){
_showDialog;
},
和
onPressed: _showDialog,
和
onPressed: () => _showDialog,
这是我的职责。
void _showDialog() {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text("Title"),
content: Text("Body"),
actions: <Widget>[
FlatButton(
child: Text("Close"),
onPressed: () {
Navigator.of(context).pop();
},
),
],
);
},
);
}
我不断收到“无效的常数值”。
编辑:
这是我打电话给onPressed的地方:
secondary: const IconButton(
icon: Icon(Icons.domain),
onPressed: (){
_showDialog();
},
),
答案 0 :(得分:2)
您应该尝试以下方式:
onPressed: (){
_showDialog();
},
或
onPressed: _showDialog,
或
onPressed: () => _showDialog(),
更新
轻松解决:删除 const 关键字
secondary: IconButton(
icon: Icon(Icons.domain),
onPressed: (){
_showDialog();
},
),
答案 1 :(得分:-1)
您需要检查并删除容器(小工具)const
像这样
child: TextFormField(
decoration: **const** InputDecoration(
prefixIcon: Icon(Icons.person),
suffixIcon: IconButton(
icon: Icon(Icons.remove_red_eye),
onPressed: showPassword,
),
labelText: "Name *",
hintText: "Your Github account username",
),
)
child: TextFormField(
decoration:InputDecoration(
...
)
答案 2 :(得分:-2)
删除常量关键字
您的代码
secondary: const IconButton(
icon: Icon(Icons.domain),
onPressed: (){
_showDialog();
},
),
已更新
secondary: IconButton(
icon: Icon(Icons.domain),
onPressed: (){
_showDialog();
},
),
答案 3 :(得分:-2)
在某些情况下,您可以声明顶级或静态函数:
static void myHandler() {
_showDialog();
}
...
secondary: const IconButton(
icon: Icon(Icons.domain),
onPressed: myHandler,
),
仅在这种情况下(顶级或静态),myHandler可以被视为常量并传递给常量构造函数。