Pablichjenkov
12/08/2022, 10:33 PMCreating a state object during composition without using remember
Pablichjenkov
12/08/2022, 10:35 PM@OptIn(ExperimentalMaterial3WindowSizeClassApi::class)
class AndroidWindowSizeInfoProvider(
val activity: Activity,
): IWindowSizeInfoProvider {
//@SuppressLint("UnrememberedMutableState")
@Composable
override fun windowSizeInfo(): State<WindowSizeInfo> {
val windowSize = calculateWindowSizeClass(activity)
return derivedStateOf {
when(windowSize.widthSizeClass){
WindowWidthSizeClass.Compact -> WindowSizeInfo.Compact
WindowWidthSizeClass.Medium -> WindowSizeInfo.Medium
WindowWidthSizeClass.Expanded -> WindowSizeInfo.Expanded
else -> throw IllegalStateException()
}
}
}
}
Above code makes lint warning me about using derivedStateOf without wrapping it in a remember block. Why is this? - Should I still remember it if I am returning it from a function?
I plan to remember it in the caller composable function scope not in this producer scopeDominaezzz
12/08/2022, 10:56 PMwindowSizeInfo()
probably shouldn't be marked composable.Pablichjenkov
12/08/2022, 11:07 PMcalculateWindowSizeClass(activity)
is Composable, and the library doesn’t provide a non composy api.
They: implementation( "androidx.compose.material3:material3-window-size-class:1.0.1"
Pablichjenkov
12/08/2022, 11:10 PMPablichjenkov
12/08/2022, 11:29 PM