I'm currently using a List
with a GroupedListStyle()
, and with a .regular horizontalSizeClass
(e.g an iPad in landscape mode), this style of List automatically creates some padding to each section, like this:
struct ListView: View {
var body: some View {
List {
Section {
Text("One")
Text("Two")
Text("Three")
}
}.listStyle(GroupedListStyle())
}
}
This is great, I want this. But since I need to display some elements inside the rows with a fixed width, I need to know the actual width of the row inside the List.
I've tried wrapping the List with a GeometryReader, but the width doesn't match the row's width because of the padding around the entire Section
.
struct ListView: View {
var body: some View {
GeometryReader { geometry in
List {
Section {
Text("One") // <-- geometry.size.width != Text.width
Text("Two")
Text("Three")
}
}.listStyle(GroupedListStyle())
}
}
}
So I've tried using the PreferenceKey method explained here by putting a GeometryReader
in the listRowBackground
modifier of the row, but the value is never updated.
Is there a working way to get the size of the parent, without using a GeometryReader
around the parent (as it is finnicky on a List, and needs to be specified Height and Width to work properly)?