GoSnackbar — a mensagem que se posiciona sozinha
Fica embaixo (ou em cima), acima da área segura e do teclado, e vai embora sozinha. Sem ela, você escreve a camada, o posicionamento, o cronômetro e o desmonte em toda tela que precisa dizer "salvo".
snack.show_text("Salvo", GoTheme.SUCCESS)
# Uma chance de desfazer — 0 é o primeiro botão, -1 significa que o tempo acabou
if await snack.post({"text": "Item descartado", "actions": ["Desfazer"]}) == 0:
restore_item()
As mensagens entram em uma fila em vez de sobrescrever umas às outras, e repetições da mesma linha são fundidas — um servidor que falha quatro vezes por segundo não empilha mais quatro minutos de alertas. Um snackbar sem botão deixa o toque passar, então o jogo embaixo dele continua rodando.
GoDialogs. Os botões daqui precisam ser opcionais — Desfazer,
Detalhes, Tentar de novo.
O GoNotice é a outra metade do par: ele nunca intercepta o toque nem toma o foco, e a tela que é
dona dele decide onde ele fica. Ele não pode segurar um botão; este pode.
GoSpinner — uma espera sem fim à vista
Jogos que falam com um servidor precisam disto mais do que de qualquer outra coisa desta página: uma tela parada passa a impressão de travamento. Uma chamada transforma o botão que você pressionou em um spinner no lugar dele mesmo.
GoSpinner.busy(buy_button, true)
var ok := await server.purchase(item)
GoSpinner.busy(buy_button, false)
O botão mantém o tamanho — o rótulo fica transparente em vez de sumir, então a fileira não dá pulo — e fica
desabilitado enquanto gira. Essa segunda parte é o que importa: uma compra não pode disparar duas vezes
enquanto você espera com await. Com o reduce_motion ligado ele não gira; três
pontinhos pulsam no lugar.
Progresso que dá para medir é um GoBar. Um spinner não promete nada sobre quando termina.
GoBadge — o pontinho de não lido, a etiqueta NOVO, o 99+
GoBadge.attach(mail_button, unread_count) # se esconde no zero
GoBadge.attach(shop_button, 0, "NOVO")
GoBadge.attach(friend_button, 3, "", true) # um pontinho — "tem alguma coisa aí"
Ele fica pendurado no canto superior direito do hospedeiro por âncoras, então acompanha um hospedeiro cujo tamanho só é decidido depois, e anexar duas vezes devolve o mesmo badge. Use um número quando a contagem muda o que o jogador faz, e um pontinho quando só importa que "tem alguma coisa lá".
A cor do texto é escolhida pelo contraste com a cor que o skin pintou no badge — nunca se supõe branco — e ele carrega um nome acessível, porque um pontinho colorido não diz nada a um leitor de tela.