@@ -8,20 +8,42 @@ import androidx.compose.material3.Button
88import androidx.compose.material3.MaterialTheme
99import androidx.compose.material3.Text
1010import androidx.compose.runtime.Composable
11+ import androidx.compose.runtime.DisposableEffect
1112import androidx.compose.runtime.getValue
1213import androidx.compose.runtime.mutableIntStateOf
13- import androidx.compose.runtime.saveable.rememberSaveable
14+ import androidx.compose.runtime.remember
1415import androidx.compose.runtime.setValue
1516import androidx.compose.ui.Alignment
1617import androidx.compose.ui.Modifier
1718import androidx.compose.ui.text.style.TextAlign
1819import androidx.compose.ui.unit.dp
20+ import com.callstack.brownfield.android.example.BrownfieldStore
21+ import com.callstack.brownie.Store
22+ import com.callstack.brownie.StoreManager
23+ import com.callstack.brownie.store
24+ import com.callstack.brownie.subscribe
25+
26+ private fun brownieStore (): Store <BrownfieldStore >? {
27+ return StoreManager .shared.store(BrownfieldStore .STORE_NAME )
28+ }
1929
2030@Composable
2131fun GreetingCard (
2232 name : String ,
2333) {
24- var counter by rememberSaveable { mutableIntStateOf(0 ) }
34+ var counter by remember { mutableIntStateOf(0 ) }
35+
36+ DisposableEffect (Unit ) {
37+ val store = brownieStore()
38+ val unsubscribe = store?.subscribe(
39+ selector = { state -> state.counter.toInt() },
40+ onChange = { updatedCounter -> counter = updatedCounter }
41+ ) ? : {}
42+
43+ onDispose {
44+ unsubscribe()
45+ }
46+ }
2547
2648 MaterialCard {
2749 Column (
@@ -43,7 +65,11 @@ fun GreetingCard(
4365 style = MaterialTheme .typography.bodyMedium
4466 )
4567
46- Button (onClick = { counter++ }) {
68+ Button (onClick = {
69+ brownieStore()?.set { state ->
70+ state.copy(counter = state.counter + 1 )
71+ }
72+ }) {
4773 Text (" Increment counter" )
4874 }
4975 }
0 commit comments