Fixed
Status Update
Comments
st...@gmail.com <st...@gmail.com> #2
If I may add something here, I've tried to take a look at other similar state objects and they all seem to have a public object that you can create outside of a composable function no problem. Some examples:
rememberPagerState / PagerState
rememberScrollState / ScrollState
rememberModalBottomSheetState / ModalBottomSheetState
// And even the new TextFieldState from BasicTextField2
rememberTextFieldState / TextFieldState
st...@gmail.com <st...@gmail.com> #3
I see we are in 1.2.0-alpha08 now, and this one has not been triaged yet, is there something more I can do other than write a message here again? If this does hit the stable release, it will mean that I will need to copy paste the entire internal code again to make this work for us, which would be very very unfortunate.
sg...@google.com <sg...@google.com>
sg...@google.com <sg...@google.com>
ap...@google.com <ap...@google.com> #4
Project: platform/frameworks/support
Branch: androidx-main
commit 05edc3f3f48149fac2bdf6a761c92fd50f5b304c
Author: Shalom Gibly <sgibly@google.com>
Date: Thu Sep 21 06:31:52 2023
Adds functions for creating date picker states
Adds non-composable functions for creating a DatePickerState and a
DateRangePickerState.
Bug: 291524052
Test: DatePickerTest and RangeRangePickerTest
Relnote: "Non-Composable functions have been added for creating a
DatePickerState and DateRangePickerState directly. These funcions can be
used as an alternative to the Composable rememberDatePickerState and
rememberDateRangePickerState functions when needed."
Change-Id: I703262a5a9d3e87da82adf1c9993b462cd8d941a
M compose/material3/material3/api/current.txt
M compose/material3/material3/api/restricted_current.txt
M compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/DatePickerTest.kt
M compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/DateRangePickerTest.kt
M compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/DatePicker.kt
M compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/DateRangePicker.kt
https://android-review.googlesource.com/2759465
Branch: androidx-main
commit 05edc3f3f48149fac2bdf6a761c92fd50f5b304c
Author: Shalom Gibly <sgibly@google.com>
Date: Thu Sep 21 06:31:52 2023
Adds functions for creating date picker states
Adds non-composable functions for creating a DatePickerState and a
DateRangePickerState.
Bug: 291524052
Test: DatePickerTest and RangeRangePickerTest
Relnote: "Non-Composable functions have been added for creating a
DatePickerState and DateRangePickerState directly. These funcions can be
used as an alternative to the Composable rememberDatePickerState and
rememberDateRangePickerState functions when needed."
Change-Id: I703262a5a9d3e87da82adf1c9993b462cd8d941a
M compose/material3/material3/api/current.txt
M compose/material3/material3/api/restricted_current.txt
M compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/DatePickerTest.kt
M compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/DateRangePickerTest.kt
M compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/DatePicker.kt
M compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/DateRangePicker.kt
sg...@google.com <sg...@google.com>
st...@gmail.com <st...@gmail.com> #5
Thank you!!!
sg...@google.com <sg...@google.com> #6
Thank you for nudging us on this! :)
Description
Jetpack Compose version: 1.2.0-alpha03
Jetpack Compose component used: androidx.compose.material3:material3
Android Studio Build: N/A
Kotlin version: N/A
DatePickerState used to be a public class, now in 1.2.x it is an interface. Before I was constructing an instance of this class in a state holding class (as described in the docshttps://developer.android.com/jetpack/compose/state#managing-state )
Now I can no longer do that, since DatePickerStateImpl is private, and the only exposed way to construct one with the rememberDatePickerState(), which is a composable function.
I feel like it should not only be possible to construct those state objects in composition. Hoisting this state into my own state holder has been super useful to be able to control the state there, and have the composables themselves use the state as it is, without constructing it and dealing with logic like which dates are allowed etc. and simply emit the UI as it should be.
Can this scenario please be considered? The docs that I linked above even are the ones who promote the idea of having these state holders, so the material3 library disallowing it for specifically the date picker component feels quite out of place.