我在Scaffold
appBar中添加了一个小部件列表作为操作,但是当我按下它们时它们没有响应,我在场景中也有一个floatingButton
并且它运行正常。< / p>
appBar: new AppBar(
title: new Text(
widget.title,
style: new TextStyle(
fontFamily: 'vazir'
),
),
centerTitle: true,
actions: <Widget>[
new IconButton(
icon: new Icon(Icons.search),
highlightColor: Colors.pink,
onPressed: _onSearchButtonPressed(),
),
],
),
void _onSearchButtonPressed() {
print("search button clicked");
}
即使我将IconButton放在Row
或Column
窗口小部件中,而不是放在appBar
中,它也无法再次使用。
的答案:
感谢siva Kumar,我在调用函数时遇到了错误,我们应该以这种方式调用它:
onPressed: _onSearchButtonPressed, // without parenthesis.
或者这样:
onPressed: (){
_onSearchButtonPressed();
},
答案 0 :(得分:8)
请尝试我的回答它会起作用。
appBar: new AppBar(
title: new Text(
widget.title,
style: new TextStyle(
fontFamily: 'vazir'
),
),
centerTitle: true,
actions: <Widget>[
new IconButton(
icon: new Icon(Icons.search),
highlightColor: Colors.pink,
onPressed: (){_onSearchButtonPressed();},
),
],
),
void _onSearchButtonPressed() {
print("search button clicked");
}
答案 1 :(得分:1)
在寻找其他解决方案时遇到问题。
答案应该是:
onPressed: _onSearchButtonPressed,
没有 () 括号。由于它们带有相同的签名,因此无需将它们包裹在另一个匿名/ lambda 函数中。
答案 2 :(得分:0)
实际上我们需要为onPressed
属性设置VoidCallback,当我们点击调用VoidCallback的图标时。
如果我们不需要任何响应,我们也设置为null。
class PracticeApp extends StatelessWidget {
Widget build(BuildContext context) {
return new Scaffold(
floatingActionButton: new FloatingActionButton(
tooltip: "Add",
child: new Icon(Icons.add),
onPressed: () { setState(); },
),
);
}
}
void setState() {
print("Button Press");
}
我们也可以像这样直接传回回传
onPressed: () { setState(() { _volume *= 1.1; }); }
null
onPressed: null