ListView.Builder play/Pause buttom flutter

后端 未结 3 1244
醉酒成梦
醉酒成梦 2020-12-21 18:50

I am using a ListView.builder to create an audio list, I need to change the play button pause individually to an item when I select it, I have tried a bool but giving play o

3条回答
  •  盖世英雄少女心
    2020-12-21 19:52

    You may have a list of boolean to save which button is selected, then pass the bool as a parameter to the audio widget, and use the bool to change the icon.

    Also pass a callback function to change the bool list, because you have to change the list from the parent widget, so a callback function is needed.

     List audioSelectedList = List.generate(AudioList.length, (i) => false);
    
    // This is a callback function that Audio will call when the button is clicked.
      selected(int index){
    // set only one bool to be true
        setState(() {
          audioSelectedList=List.generate(AudioList.length, (i) => false);// set all to false
          audioSelectedList[index]=true;  // set the selected index to be true
        });
      }
    

    ListView:

    ListView.builder(
              itemCount: AudioList.length,
              itemBuilder: (context, index) => Audio(
                selected: selected, // pass the callback function
                index: index, // use to call selected(index)
                isSelected: audioSelectedList[index], // only one bool is true in the list which is the selected index.
              ),
            ),
    

提交回复
热议问题