Beagle v1.5 não é mais mantida ativamente. A versão documentada que você está visualizando pode conter funcionalidades depreciadas. Para obter as funcionalidades mais recentes, consulte a nossa última versão .
O Beagle fornece duas maneiras para definir seus componentes utilizando builders.
Com eles, você consegue usar os componentes da plataforma de forma declarativa com Kotlin ou de uma maneira mais prática para montar os componentes com seus valores padrões, caso esteja utilizando Java ao invés de Kotlin.
A maneira de usar os builders padrões do Beagle é semelhante a qualquer outro builder que você já tenha utilizado. O nome de cada builder de forma geral é o nome do componente com o sufixo Builder anexado.
As exceções são componentes do tipo:
sealed classes
, cujo builders possuem o nome de sua classe pai como prefixo anexado.Screen
, cujo builder é ScreenComponentBuilder
.//Navigate é uma sealed class com
//OpenNativeRoute como uma classe filha
new NavigateOpenNativeRouteBuilder()
.route("/route")
.shouldResetApplication(false)
.data(new HashMap<String, String>())
.build();
//Navigate é uma sealed class com
//OpenNativeRoute como uma classe filha
NavigateOpenNativeRouteBuilder()
.route("/route")
.shouldResetApplication(false)
.data(mutableMapOf<String, String>())
.build()
Para definir um componente do Beagle utilizando esse método, você deve declarar o componente e suas propriedades utilizando chaves e métodos com o mesmo nome do campo a ser declarado ou diretamente pelo operador de atribuição (=). Veja o exemplo:
alert{
title{
valueOf("Titulo")
}//utilizando as chaves
message( valueOf("Message") )//utilizando os métodos
labelOk = "OK"//atribuindo o valor diretamente
}
//equivalente
Alert(
title = valueOf("Titulo"),
message = valueOf("Message"),
labelOk = "OK"
)
Nos casos em que o campo espera uma lista ou um mapa, você deve colocar antes do elemento a ser adicionado na coleção com o operador ‘+’. Esse operador também aceita elemento único. Veja os exemplos:
container{
children{
+Text("Hello")
+Text("There")
+listOf(Text("General"), Text("Kenobi"))
}
}
//equivalente
Container(children = listOf(
Text("Hello"),
Text("There"),
Text("General"),
Text("Kenobi")
))
navigateOpenNativeRoute {
route = "/route"
shouldResetApplication = false
data{
+("Content-Type" to "application/json")
+mapOf(
"Content-Type" to "application/json",
"Content-Type" to "application/json"
)
}
}
//equivalente
Navigate.OpenNativeRoute(
route = "/route",
shouldResetApplication = false,
data = mapOf(
"Content-Type" to "application/json",
"Content-Type" to "application/json",
"Content-Type" to "application/json"
)
)
O exemplo abaixo define uma tela simples declarada nas três maneiras disponíveis pelo Beagle:
Screen(
navigationBar = NavigationBar(
title = "Navigation Bar Title",
showBackButton = false
),
child = Text(
text = valueOf("Hello There")
).applyStyle(Style(
margin = EdgeValue(bottom = 10.unitReal())
))
)
screen{
navigationBar{
title = "Navigation Bar Title"
showBackButton = true
}
child{
text{
text = valueOf("Hello There")
}.style {
margin{
bottom = 10.unitReal()
}
}
}
}
ScreenComponentBuilder()
.navigationBar(
NavigationBarBuilder()
.title("Navigation Bar Title")
.showBackButton(true)
.build()
).child(
TextBuilder()
.text(valueOf("Hello There"))
.build().applyStyle(
StyleBuilder()
.margin(
EdgeValueBuilder()
.bottom(10.unitReal())
.build()
)
.build()
)
).build()
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.