Compose
Compose copied to clipboard
Configure useUnmergedTree flag
trafficstars
I need to find not merged element in compose tree. So how can I set useUnmergedTree to true to use in ViewBuilder?
I have a same question
Hey, I also got stuck with this problem. But after some digging I found two ways to specify useUnmergedTree option:
- Use
KNodeconstructor withnodeMatcherparameter:
val title = KNode(
semanticsProvider = semanticsProvider,
nodeMatcher = NodeMatcher(
matcher = hasTestTag("title_test_tag"),
useUnmergedTree = true,
),
parentNode = this,
)
- Overwrite
useUnmergedTreevariable inViewBuilderblock:
val title: KNode = child {
useUnmergedTree = true
hasTestTag("title_test_tag")
}
You can override constructors for KNode
class KAppNode : KNode {
constructor(
semanticsProvider: SemanticsNodeInteractionsProvider,
nodeMatcher: NodeMatcher,
parentNode: BaseNode<*>? = null,
) : super(
semanticsProvider,
nodeMatcher.copy(
useUnmergedTree = true
),
parentNode
)
constructor(
semanticsProvider: SemanticsNodeInteractionsProvider,
nodeMatcher: NodeMatcher,
) : super(
semanticsProvider,
nodeMatcher.copy(
useUnmergedTree = true
)
)
constructor(
semanticsProvider: SemanticsNodeInteractionsProvider,
viewBuilderAction: ViewBuilder.() -> Unit,
) : super(
semanticsProvider,
ViewBuilder().apply {
useUnmergedTree = true
viewBuilderAction()
}.build()
)
}
and use it like this
val title: KAppNode = child { hasTestTag("titleTestTag") }
Provided a global one KakaoCompose.Override.useUnmergedTree = true