按下 IconButton 执行两个操作

Perform two actions on the press of an IconButton

我正在开发一个音乐播放器,在按下下一步按钮时我想执行两个功能,一个是将歌曲添加到队列中,另一个功能用于触发 'addSong' 的插件方法。在按下按钮时,我希望执行两个功能,即“_pageManager.addSong”和'addSongToQueue'。

这是代码

ValueListenableBuilder<bool>(
          valueListenable: _pageManager.isLastSongNotifier,
          builder: (_, isLast, __) {
            return IconButton(
              icon: Icon(Icons.skip_next),
              onPressed: (isLast)
                  ? _pageManager.addSong
                  : _pageManager.onNextSongButtonPressed;
            );
          }), 

不要使用三元,而只使用函数体。

onPressed: () {
  function1();
  function2();
}

你可以像这样在被压制的函数中使用if

 onPressed: (){
  if(isLast){
    _pageManager.addSong
   }else{                                            
    _pageManager.onNextSongButtonPressed;
   }
 }

或者如果你只需要检查一个条件就这样使用它

 onPressed: () =>
  isLast ? _pageManager.addSong
   :                                           
 _pageManager.onNextSongButtonPressed;

                                       

我明白你的逻辑了 我可能会建议创建一个函数

void onAddSong() {
  _pageManager.addSong();

  // addSongToQueue()
}

然后调用这个

onPressed: (isLast)
   ? this.onAddSong
   : _pageManager.onNextSongButtonPressed;
);

我建议你用那个 isLast @param 来考虑这个小部件的可扩展性,可以吗?