Arjan van Wieringen
04/29/2022, 9:52 AMAdam Powell
04/29/2022, 1:52 PMArjan van Wieringen
04/29/2022, 2:39 PMAdam Powell
04/29/2022, 2:43 PMAdam Powell
04/29/2022, 2:43 PMArjan van Wieringen
04/29/2022, 5:13 PMAdam Powell
04/29/2022, 5:37 PMAdam Powell
04/29/2022, 5:38 PM@Composable functions that emit the node type for that applier; these will be the composables you build everything else out ofAdam Powell
04/29/2022, 5:38 PMComposition using an instance of your applier plus a CompositionContextAdam Powell
04/29/2022, 5:39 PMCompositionContext can be obtained from rememberCompositionContext() to create a subcomposition of an existing composition, or you can construct your own Recomposer to drive compositions yourselfAdam Powell
04/29/2022, 5:40 PMRecomposer is a CompositionContext )Arjan van Wieringen
04/29/2022, 5:41 PMAdam Powell
04/29/2022, 5:43 PMRecomposer.runRecomposeAndApplyChanges is the main loop of recomposition, it listens for invalidations to the compositions registered with it and then awaits a frame from the calling `CoroutineContext`'s MonotonicFrameClock - you can see BroadcastMonotonicFrameClock for an example/one you can use in some situations. It will give you a callback once something wants a frame from it and then you can choose when to signal the frame to perform recomposition. Usually you'll want to do this right before you intend to do something with the recomposed output tree, when you want to get your applier to apply all potential changesAdam Powell
04/29/2022, 5:43 PMAdam Powell
04/29/2022, 5:44 PMwithRunningRecomposer api that makes the setup of the runRecomposeAndApplyChanges part a bit more turnkeyArjan van Wieringen
04/29/2022, 7:21 PMAdam Powell
04/29/2022, 7:33 PMAdam Powell
04/29/2022, 7:34 PMSnapshot.withMutableSnapshot { doStuff() }Chris Arriola
05/03/2022, 8:40 PMArjan van Wieringen
05/04/2022, 6:28 AMIcyrockton
05/05/2022, 3:53 PM