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
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.
),
),