1

The code is below. I want to delete the final fading animation when onDelete is tapped.

struct ContentView: View {
    @State var names = ["david", "john", "amber"]
    
    var body: some View {
        List {
            ForEach(names, id: \.self) { (item) in
                Text(item)
            }.onDelete(perform: self.deleteItem)
        }
    }
    
    private func deleteItem(at indexSet: IndexSet) {
        self.names.remove(atOffsets: indexSet)
    }
}

I tried to use .animation() but none works

pawello2222
  • 46,897
  • 22
  • 145
  • 209

1 Answers1

0

A possible solution is to force redraw the List:

struct ContentView: View {
    @State private var names = ["david", "john", "amber"]
    @State private var listId = UUID()

    var body: some View {
        List {
            ForEach(names, id: \.self) { item in
                Text(item)
            }
            .onDelete(perform: deleteItem)
        }
        .id(listId)
    }

    private func deleteItem(at indexSet: IndexSet) {
        names.remove(atOffsets: indexSet)
        listId = UUID()
    }
}
pawello2222
  • 46,897
  • 22
  • 145
  • 209