2022年9月25日日曜日

AndroidViewBinding

implementation "androidx.compose.ui:ui-viewbinding:$compose_version" AndroidViewBinding( factory = ListItemBinding::inflate, update = { ... }, modifier = ..., ) AndroidViewBinding( factory = { inflater, parent, attachToParent -> ListItemBinding.inflate(inflater, parent, attachToParent).apply { ... } }, update = { ... }, modifier = ..., )

2022年9月17日土曜日

derivedStateOf の効果を LayoutInspector の composition count で確認する

derivedStateOf を使っていない、よくないコード val state = rememberLazyListState() // TODO derivedStateOf を使う val showScrollToTopButton= state.firstVisibleItemIndex > 0 LazyColumn( state = state, modifier = Modifier.fillMaxSize() ) { ... } if (showScrollToTopButton) { Button( onClick = { ... }, ... ) { Text("scroll to top") } }
LayoutInspector で Button が表示されたあともスクロールのたびに recompose が走っているので Button の skip count が増えていっています。 val showScrollToTopButton by remember { derivedStateOf { state.firstVisibleItemIndex > 0 } } に変えると、スクロールのたびに recompose が走っていたのがなくなり、Button の skip count が増えなくなりました。