颤动:IconButton onPressed没有被调用

时间:2018-02-26 05:39:45

标签: android ios click flutter

我在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放在RowColumn窗口小部件中,而不是放在appBar中,它也无法再次使用。
答案:
感谢siva Kumar,我在调用函数时遇到了错误,我们应该以这种方式调用它:

onPressed: _onSearchButtonPressed, // without parenthesis.

或者这样:

onPressed: (){
    _onSearchButtonPressed();
},

3 个答案:

答案 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