I want to create a custom presentation detent to set a custom height for a sheet presentation. For that, I added a struct conforming to CustomPresentationDetent
which has an only method static function height(in: Self.Context) -> CGFloat?
.
Implementation works fine, the view presented inside the sheet
modifier has the height returned by the custom detent. The problem comes when I try to access the Context
's environment values inside the protocol conformance method.
PresentationDetent.Context
has a subscript that enables accessing any environment value subscript<T>(dynamicMember _: KeyPath<EnvironmentValues, T>) -> T
but using it from the custom detents height
method only returns the default value for each one.
I'm trying to set the environment values through environment<V>(WritableKeyPath<EnvironmentValues, V>, V)
modifier but it does not seem to work. When accessed via @Environment
property wrapper from the view it does get the updated value though.
Is there any other way to set an environment value or any special way to set it so that it is visible from a presentation detent?