dart 按下IconButton时执行两个操作

vhipe2zx  于 2023-05-04  发布在  其他
关注(0)|答案(4)|浏览(131)

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

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

2w3rbyxf1#

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

void onAddSong() {
  _pageManager.addSong();

  // addSongToQueue()
}

那就叫这个

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

我建议您考虑一下这个小部件的可伸缩性,使用isLast @param,可以吗?

h4cxqtbf

h4cxqtbf2#

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

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

e3bfsja23#

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

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

如果只需要检查一个条件,可以这样使用

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

lh80um4z4#

请试试这个:

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

              // Adding Song
              _pageManager.addSong;

              // Button was Pressed
              _pageManager.onNextSongButtonPressed;
      }),

相关问题