Estados de Interface
Neste tutorial, iremos aprender como utilizar estados de interface, também chamados de UI States
.
Introdução
Enquanto alguns dados devem ser persistidos em tabelas, como informações de usuários, produtos, etc., outros dados, como indicadores de carregamento (loading), são temporários e devem ser mantidos apenas enquanto o usuário interage com a aplicação. Esses dados temporários são chamados de estados de interface, ou UI States
.
Criando um UI State
Os UI States são definidos no parâmetro State Definitions
dos Blocks
. Para criar um novo estado:
- Clique em
State Definitions
. - Clique em
+ Add Item
. - Clique no estado que foi adicionado para editá-lo.
- Em
Key
, digite o nome do estado. - Em
Component
, selecione o tipo desse estado. Por exemplo,data2-core-primitives@Boolean
para um estado que pode sertrue
oufalse
. - Em
Initial Value
, coloque o valor inicial do estado.
Para acessar um UIState
, utilizamos o componente data2-core-types@Getter
com Module
como UIState
e Prop
como o Block
que contém o estado, e State Prop
como o nome do estado.
Para alterar um UIState
, utilizamos o componente data2-core-types@Setter
com Module
como UIState
, Prop
como o Block
que contém o estado, State Prop
como o nome do estado e Value
como o novo valor.
Exemplo: Botão com estado Loading
Neste exemplo, criaremos um botão com estado de loading
. O botão terá um UI State chamado loading
de valor false
e tipo data2-core-primitives@Boolean
. No On Click
desse botão, mudaremos o estado loading
para true
e, após 2 segundos, voltaremos o estado para false
.
Passo a Passo
- Crie um
Artboard
e desenhe umBlock
que servirá botão. - Selecione o
Block
que foi desenhado. - Clique em
State Definitions
. Adicione umState Definitions
e crie um estado chamadoloading
com tipodata2-core-primitives@Boolean
e valorfalse
. - Volte ao início do
Inspector
clicando em< Inspector
.
- Em
On Click
, clique nof()
e selecioneSeries
.
O Series
é um componente que executa uma lista de ações em sequência. Cada ação é executada após a anterior ser concluída.
- Clique no
On Click
e emActions
para navegar para a lista de ações. - Clique em
+ Add Item
. Mude o tipo dela paraSetter
clicando emf()
e selecionandosetter
. - Clique para navegar para a primeira ação. Em
Module
, selecioneUIState
. - Em
Prop
, clique emPick Component
e selecione oBlock
que contém o estadoloading
. Se você não conseguir clicar no nome do estado, não se preocupe, depois de selecionar oBlock
, é possível selecionar o estado que você deseja adicionar através da lista emState Prop
. - Em
Value
, clique nof()
, selecioneBoolean
e coloque o valor comotrue
(habilite o controle). - Volte para a lista de ações.
- Clique em
+ Add Item
para adicionar outra ação. - Mude o tipo dela para
Delay
clicando emf()
e selecionandoDelay
. - Clique para editar a ação. Em
Delay
, coloque2000
(2 segundos). - Volte para a lista de ações.
- Adicione outra ação.
- Agora podemos copiar a primeira ação que adicionamos. Passe o mouse em cima da ação e aperte
Ctrl + C
(ouCMD + C
no Mac) para copiar. - Coloque o mouse em cima da última ação e aperte
Ctrl + V
(ouCMD + V
no Mac) para colar. - Clique nessa ação e altere o
Value
detrue
parafalse
.
Agora, iremos utilizar o valor de loading
para mostrar um texto diferente no botão. Para isso, vamos adicionar um Text
ao Block
e mudar o texto de acordo com o valor de loading
.
- Volte para a raiz do
Inspector
. - Mude o tipo de
Text
paraIf
. - Clique no
If
para editar. EmCompare
, clique emf()
e clique emui
ao lado dogetter
. Isso fará com que oGetter
veio pré-preenchido com oUIState
. - Clique no
Compare
para editar oGetter
, e selecione oBlock
que contém o estadoloading
. EmState Prop
, não esqueça de selecionarloading
. - Agora, volte para o
If
. NoThen
, teremos o texto quando oloading
fortrue
, portanto, coloqueCarregando...
. - No
Else
, coloqueClique aqui
.
- Salve o
Block
clicando no botão deSave
doInspector
ou desselecionando oBlock
. - Clique no botão
Preview
doArtboard
para ver o resultado.