'What's difference between "= remember" and " by remember" (Kotlin, Jetpack Compose)

I think two use case of remember exist.
first one is

@Composable
fun abc() {
    var aa = remember { mutableStateOf(true) }
}

and second

@Composable
fun abc() {
    var aa by remember { mutableStateOf(true) }
}

Is there any functional differencies exist? or just for convenience?



Solution 1:[1]

It is just for convenience, to shortify syntax. By using delegate (by keyword) you can skip relating to value because it is done under the hood.

In the documentation you can read

There are three ways to declare a MutableState object in a composable:

val mutableState = remember { mutableStateOf(default) }
var value by remember { mutableStateOf(default) }
val (value, setValue) = remember { mutableStateOf(default) }

These declarations are equivalent, and are provided as syntax sugar for different uses of state. You should pick the one that produces the easiest-to-read code in the composable you're writing.

Cheers

Solution 2:[2]

i've noticed a slight difference between both expressions :

when using

@Composable
fun abc() {
var aa = remember { mutableStateOf(true) }
}

var aa will be of type MutableState.

in case "by" is used

@Composable
fun abc() {
var aa by remember { mutableStateOf(true) }
}

var aa will be considered of type Boolean. personally i prefer using by to preserve the primitive types.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Om Kumar
Solution 2 REDA