Reflexão sobre APP Teste de Depressão

No final do ano 2020, lancei uma nova APP na Play Store, chamada Teste de Depressão.
Consiste num inquérito de 21 perguntas em que ao responder, o utilizador será informado se está ou não com depressão e, se estiver, classifica-a em leve, moderada ou severa, conforme ilustro  nos emojis abaixo.

Sem
Depressão

Depressão
Ligeira

Depressão Moderada

Depressão
Severa

Confesso que a princípio, não achei que “fosse dar em nada”, mas a verdade é que mais de um ano, depois já conta com +10.000 instalações.
Mas o motivo da minha partilha, não é tanto o número surpreendente de instalações, mas o feedback dos utilizadores! Sem que seja pedido ou exigido, para além de fazerem o teste, os utilizadores regressam à Play Store para dar a sua opinião, agradecem, dão 5 estrelas e principalmente deixam o seu comentário pessoal

 “A APP está muito boa, fiz o teste e tenho uma depressão severa, tenho 10 anos”!
“Tenho medo de contar aos meus pais, eles não vão entender, sinto-me deprimido, tenho 9 anos”
“Choro o dia todo às escondidas, passo os dias ao telemóvel para me tentar distrair, não sei o que fazer”.
“O meu teste deu depressão severa! Já faz tempo que eu me sinto deprimida…”
“Muito bom este app. O ruim é que eu tenho uma depressão severa.”
“O app é realmente muito bom e muito fácil de usar. Estou um pouco mal porque fui diagnosticado com depressão severa aos 11 anos”

E por aí vai, já são quase uma centena de comentários, e posso dizer que mais de 80% são de adolescentes (talvez mais, mas não consigo precisar) e todos eles dizem que foram “diagnosticados” pela APP com depressão severa, e com comentários do género destes que enumerei acima.

Ainda fiz um teste à APP a ver se por algum erro no código, estaria a dar depressão severa a todos, mas descobri que não! Para ter este resultado, o utilizador efetivamente respondeu afirmativamente a perguntas como: “Não tenho qualquer esperança no futuro”, “Sinto que sou um falhado”, “Não tenho prazer em nada”, “Odeio-me”, “Perdi o interesse pelas pessoas”. 
Tentei responder a todos os comentários, com mensagens motivacionais e rapidamente fiz uma alteração à APP: Na última tela, lancei uma série de conselhos sobre como prevenir / tratar uma depressão e aconselhei os utilizadores deprimidos a ler e aplicar essas sugestões.

Mas isto incomodou-me: Afinal, porque é que tantos adolescentes e pré-adolescentes estão deprimidos? Será possível? É verdade que a adolescência é uma fase complicada, mas o que é que se passa com esta geração?
Trago-vos algumas das minhas reflexões sobre esta problemática:

1) Há mais de um ano que estamos a viver uma pandemia, onde temos de ter distanciamento social, ensino à distância, não vemos familiares e amigos! Sabemos que o adolescente se descobre a si mesmo comparando-se com o outro e interagindo com o outro, ora isso foi-lhes roubado, ou talvez melhor, substituído, por um outro online que publica apenas a sua vida de avatar nas redes sociais, que nada tem a ver com a sua realidade. Publica-se o que se quer sentir e não o que sente, onde somos heróis e felizes em todas as nossas demandas.

2) As rotinas diárias das crianças em casa foram alteradas! Começaram a ter vários hábitos errados no estilo de vida, que lhes estão a retirar a alegria de viver sem perceberem: deitam-se tarde e deitar depois das 22 horas é prejudicial, porque inibe a subida dos níveis de melatonina, a hormona que começa a subir após o pôr do sol, e nos prepara para uma boa noite de descanso.  Ao resistirmos em ir para a cama, estamos a lutar contra o fisiológico e não conseguiremos obter os benefícios de uma boa noite de sono reparador, tanto físico como emocional. Dormir é muito importante para estarmos bem dispostos e de bom humor durante o dia.

3) Falta de exercício físico: As crianças deixaram de ir à escola, deixaram de fazer educação física, deixaram de fazer exercício físico! Já escrevi alguns artigos a falar na importância do exercício físico e como ele é um antidepressivo natural, melhora a autoestima, o conhecimento de nós próprios e o nosso autoconceito, para além da produção de hormonas do prazer e bem estar.

4) Podia falar-vos também, de que em casa, em confinamento, temos uma alimentação tendenciosamente errada. Como não estamos ocupados com o trabalho ou com a escola, passamos mais vezes pela cozinha e vamos fazendo diversos snacks! Estar sempre a comer, e muitas vezes comidas com elevado nível de açúcar, leva ao que vários estudos já provaram:  flutuações dos níveis de açúcar que mexem com o nosso estado de espírito e emoções, e nos deixam mais irritados/deprimidos.

5) Por fim, mas talvez o mais importante: O telemóvel! Não me surpreende que a maior parte dos utilizadores sejam crianças, pois são elas que passam horas a fio à frente dos écrans… Para os pais é um descanso, estão entretidas e não chateiam, nem se mexem, estão quietas fazendo sabe-se lá o quê.
Ora os écrans, os telemóveis, são férteis em hiper estímulos, ou seja, o nosso cérebro agora com o telemóvel é estimulado a um ritmo nunca antes visto. O nosso cérebro, é coercivamente curioso, está sempre à procura de novas informações e o telemóvel satisfaz essa curiosidade a uma velocidade vertiginosa e por isso é tão indutor de dopamina. Sempre novas informações, sejam elas relevantes ou apenas lixo! Lá vamos nós ver o que há de novo no tiktok, no insta, no face, no youtube, no mail, nas notícias…. etc… etc… Estar sempre a estimular o nosso cérebro tem as suas consequências: retira-nos a capacidade de introspeção, de pensamentos profundos, as angústias são substituídas por mais um post, por mais um lixo digital que esteja a rolar por aí.

Penso que é esta mixórdia de fatores que torna as crianças de hoje em dia, deprimidas e sem vontade de fazer nada para além do écran, sempre aborrecidas quando não têm o telemóvel nas mãos, irritadas, intolerantes às frustrações!  Já para não falar no problema de se compararem com os outros, ou melhor, da forma como os outros se apresentam nas redes sociais, que corresponde mais a um “avatar” que criaram, do que com a realidade, mas que mexe com a realidade dos outros e dos próprios.

Enfim, não sei bem, onde esta “geração covid” nos vai levar, mas parece-me que está a caminhar para uma geração desadaptada da realidade, incapaz de lidar com o quotidiano, frustrados e deprimidos, sem norte e sem objetivos…

Exercício Físico: Lição de vida do Sr. Y

Autonomia do idoso: entenda sua importância e como promover – Blog | Longevitat

Chamei para a triagem o Sr. Y, de 82 anos, que recorreu à urgência após uma queda.  Para qualquer enfermeiro que faz triagem, quando chega um paciente que vem por queda, alguns preconceitos afloram logo à mente:

Se for uma criança: Muito provavelmente não tem nada! Caem e choram muito ou pouco dependendo de quem está a ver, levantam-se com um galo na cabeça, um arranhão no joelho, mas está tudo bem.  Alguns pais mais extremosos vêm a correr à urgência, e ainda na sala de espera, antes de ser chamada para a  triagem, lá está a criança aos pulos! E os pais preocupados para que ela não adormeça, porque sabe-se lá o que pode ter acontecido à moleirinha e vá que nunca mais acorde…

Os adolescentes: Esses não vêm à urgência! A não ser que sejam arrastados porque apresentam uma deformação evidente e não dá para esconder a fratura…

Jovens da minha idade: Depois da queda, já não é como as crianças, já demora a passar! Mas vêm à urgência só porque não souberam esperar mais um pouco em casa, cumprindo as velhinhas mas eficazes indicações RICE:
Rest: Repouso;
Ice: Gelo;
Compression: Compressão;
Elevation: Elevar;
Ou então, não raramente, vêm à procura de uma baixa médica para não ir trabalhar !!!

Agora, quando vamos triar um ancião de 82 anos, com história de queda, alguns cenários surgem como os mais prováveis! Culpa dos ossos fracos da idade, da habitual inatividade, agravado por um perímetro abdominal cultivado e aumentado durante largos anos, fazem desta faixa etária alvos profícuos para: 
– Fratura do colo do fémur, muito comum na queda dos idosos;
– Fratura de Colles, fratura do punho por causa da queda com apoio da mão;
– Fratura de vértebras nas quedas para trás;
– Fratura da grelha costal, quando o impacto é torácico;
– E claro, as habituais feridas inciso contusas frontais ou occipitais “tipo estrela”, desafiantes para suturar, e tantas vezes com brinde, entenda-se, hematoma intracerebral, causada da vulgar hipo-coagulação provocada pelos medicamentos receitados para as ptologias cardio-vasculares típicas desta idade.


O Sr. Y, atende à chamada para a trigaem pelo seu próprio pé, portanto podem diminuir a vossa expectativa em encontrar uma destas vulgares fraturas neste espécime.

Depois de saber o motivo da vinda, pergunto: “Sr. Y, que doenças é que tem”?Claro que, aos 82 anos, após esta pergunta, coloco o dedo indicador direito na tecla “h”, esperando a habitual hipertensão arterial, como a primeira de uma lista interminável de doenças, que não raras vezes, é maior do que a minha lista de compras semanal!

Estava eu pronto a disparar a primeira doença e a resposta foi: “nenhuma”.

Quem é triador sabe muito bem, que embora eles digam que não têm doenças, quando perguntamos se ‘tomam algum medicamento todos os dias’, eles vão dizer: “Ah sim, tomo medicamentos para a tensão, para os diabetes, para o colesterol, para o ácido úrico, para a depressão, para a ansiedade, para dormir, para acordar, para fazer xixi, etc, etc…  acho que já entenderam a ideia.

Faço então a pergunta xeque-mate: “Sr. Y, que medicamentos é que toma todos os dias?”
Volto a colocar o dedo indicador na tecla “h”, confiante que terei que a pressionar e oiço a resposta: “Não tomo nenhum”.
Ora bem, esfreguem bem os olhos e pensem comigo: tem à vossa frente um jovem de 82 anos, que diz que não têm doenças e não toma medicamentos, conhecem algum desta colheita?!
Contemplando novamente o Sr. Y e o registo da sua idade, surge-me outra ideia na cabeça: Provavelmente estou perante um parente do conhecido tio alemão Alzheimer, e sem saber estou a ter uma conversa numa realidade alternativa! No entanto, a filha que o acompanhava, também com alguma idade, nada dizia, nem aponta nenhum erro ao discurso do progenitor!

Então pensei, para mim… bom, isto só pode ser uma coisa e arrisco a pergunta: “Sr. Y, qual é o exercício físico que você faz?”.
Quase consegui ver um sorriso, por debaixo da maldita máscara que o COVID nos vestiu… e a resposta foi: “Todos! Ainda há 2 anos jogava futebol 5 com os amigos!” 
Esfreguem lá outra vez os olhos! Confesso que fiquei deliciado com o Sr. Y!
Mas não me consigo imaginar a jogar futebol com um senhor de 80 anos… acho que tinha medo de, sem querer, dar-lhe um leve toque, que o fizesse voar e aterrar no chão, e no mínimo partir o fémur, o punho, as vértebras, as costelas e a cabeça… 

Não resisti a fazer outra pergunta, muito importante para anamnese da triagem: “Sr. Y, e com quantos amigos da sua idade você jogava à bola?”
Já estava a imaginar uma turma sui generis a correr atrás de uma bola, alguns com bengalas e a coxear, como se fosse um jogo em câmara lenta (eu sei, a imaginação estava ao rubro!).
Outro sorriso, debaixo da maldita máscara…. (acho que já desdenhei da máscara ainda há pouco) e respondeu: “Jogava com uns miúdos de 20 e 30 anos!”.

Apeteceu-me fazer uma festa em honra ao Sr. Y! Pelo seu exemplo de vida, e por ser uma prova viva que o exercício é o elixir da juventude, que diminui todas as causas de doenças, é um ótimo antidepressivo, dá-nos resistência física e psíquica, melhor a função cardio-vascular, e…. pronto, está bem, vou controlar-me e parar de falar dos infinitos benefícios do exercício físico, hoje ficamos apenas pelo exemplo do Sr. Y que quero destacar, e que fala mais do que qualquer discurso a favor do exercício físico.

Apenas lhe disse: “Sr. Y, tenho exatamente metade da sua idade, também sou um apaixonado pelo exercício físico, e também eu espero quando chegar à sua idade, continuar a dizer: “não tenho doenças e não tomo medicamentos, obrigado pelo seu exemplo inspirador que, se me permite, vou partilhar”!

E com esta ideia inspiradora e profunda vos deixo: Mexam-se pá!!! 
Deixem-se dessa desculpa do “não tenho tempo”, porque para o que queremos, damos sempre um “jeito”, mas para o que não queremos arranjamos sempre um “pretexto”. E se o pretexto for a idade, metam os olhos no Sr. Y!

Termino com a ressalva, não precisa de ser futebol 5! Todos os exercícios são bons: resta-nos fazer o que gostamos mais, ou o que detestamos menos, mas façam, pela vossa saúde… 

Ah, quase me ia esquecendo: o Sr. Y não tinha nenhuma fratura, porque o exercício, também fortaleçe aos ossos 🙂

1ª Dia » Férias autocaravana

LEVANTAMENTO DA AUTOCARAVANA: Após sair do trabalho, fui buscar a autocaravana. Na Campervan, aguardavam por mim para assinar contrato, fazer uma inspeção da caravana, para registar os riscos e eventuais batidas na viatura e deram-me uma explicação sumária de como funcionam as coisas.

Ao pegar no “bicho”, (nunca tinha conduzido um veículo tão grande), a primeira impressão foi: Onde está o espelho retrovisor ?! R: Não existe, é compensado por espelhos laterais maiores! A princípio causa uma certa sensação de cegueira por não ver o que está na retaguarda. De resto, a condução não é muito diferente dos ligeiros, tive só de fazer as curvas mais largas para a roda de traz não bater nos passeios, é preciso espaço mais largos para o estacionamento e mais espaço para fazer manobras simples. Mas nada disso foi grande problema.

ARRUMAÇÃO DAS MALAS: Cheguei a casa e nova tarefa: arrumar os tarecos no espaço disponível. Creio que já disse que levei 4 mulheres comigo, certo? Como podem imaginar também levei as malas correspondentes!!! A caravana até tem vários locais de arrumação: compartimentos na bancada da cozinha, dispensa, frigorífico, armários superiores em toda a caravana inclusive nas camas, acabou por dar para arrumar as loiças e a comida. Deixo só uma observação: quando forem vocês, pensem em levar loiça de plástico, é que a loiça para além de ser mais pesada, ainda faz algum barulho nas curvas! Mas eram malas a mais, na minha opinião claro, para além do porta-bagagens, por debaixo da cama, algumas tiveram mesmo que ficar por cima das camas, e outros espaços disponíveis. 
Mas pronto, depois de umas quantas viagens, subidas e descidas do 1ª andar até à caravana estava tudo pronto para a partida. A 3 minutos depois da partida, recebi um telefonema do vizinho de baixo: “Tou Byron, saíste agora numa auto caravana? Olha que o respirador de cima esta aberto, é capaz de não ser muito bom para a viagem!”  Claro que as crianças gostam de ver e experimentar tudo, também abriram o respirador mas não voltaram a fechar! Ainda bem que tenho bons vizinhos.

Lagoa de Albufeira:
Este foi o primeiro destino. Uma vez que já saímos tarde, e os check-ins dos parques de campismo já tinham fechado, decidimos logo na primeira noite, ir à aventura, e ficar estacionados ao lado Lagoa de Albufeira.

Chegamos a tempo de ver um estrondoso por do sol, e as miúdas ficaram maravilhadas e saíram logo para  explorar os arredores, e claro, tirar muitas fotografias que é uma atividade por elas apreciada. Para jantar, uma sopa que tínhamos trazido, umas sandes e está feito!

Confesso que a logística dentro da caravana não é fácil, é preciso flexibilidade. Tem quase tudo, mas em muito menos espaço: Para comer, as malas têm de ir para cima das camas, para ter espaço na mesa e nos bancos. As cadeiras da frente, do condutor e do pendura, viram-se para trás para ficar na direção da mesa, mas não tem nenhum botão para isso. É preciso algum jeito e alguma força para conseguir rodá-las, mas nada demais. Foi um jantar agradável à beira da lagoa, com um por do sol soberbo.

1ª Noite:
Para dormir, é preciso fazer tudo ao contrário, tirar as malas de cima das camas e passá-las para cima da mesa. Vestir os pijamas não é assim tão fácil, terá de ser à vez, e para um circular na caravana, é melhor os outros ficarem sentados e esperarem a vez.

Ainda levamos o PC e deu para ver um filmezinho. Durante o filme, um carro parou ao lado da caravana com um carro patrulha atrás! Depois de estarem lá algum tempo, com os motores ligados, e numa grande conversa, achei que era melhor ir investigar. Sai da caravana, e vi um jovem dentro do carro, e o polícia tomava notas dos documentos do condutor. Perguntei ao Agente se havia algum problema em estar ali estacionado na caravana, não fosse um local ilegal para pernoitar, já que em Portugal existe algumas leis restritivas nesse assunto. Felizmente não estava na ilegalidade, ou o polícia não se quis incomodar. Pelo que percebi, os polícias devem ter vindo atrás do tal jovem, talvez por excesso de velocidade ou uma manobra perigosa e estavam a servir-lhe um “chá”, logo ao lado da caravana! Mas pronto, a estrada é pública e de todos, não me posso queixar. 

Voltei para dentro, e continuamos a ver o filme! Mas fiquei algo perturbado, não me senti seguro, pensei, ora eu aqui com 1 criança, 2 adolescentes e a mulher dentro da caravana a passar a noite na beira da estrada, isto é um bocado loucura! Os carros durante a noite, e as vozes de gente que visivelmente andava na “noite” também não me deixaram muito à vontade. Talvez se fosse sou eu e a mulher, não me sentiria tão desconfortável. 

Dia D-1 » Férias autocaravana

O que não pode faltar:

Uma das parte menos interessantes de qualquer
momento de férias, é fazer as malas! Tarefa desinteressante e só amenizada pela
emoção da pré-viagem e a expectativa que sejam umas excelentes férias. Neste
tarefa, de acordo com os hábitos de cada um, existe alguns artigos  que não podem faltar, estes são os meus:

1.    Equipamento para
corrida:
Férias não existem sem uma corrida matinal, enquanto toda a gente dorme,
um pouco depois do sol nascer, saio para explorar durante a corrida os novos locais:
a cidade a acordar, os hábitos locais, a natureza, os cheiros, são sensações de
que já não dispenso. É assim que eu gosto de começar o dia nas férias! E claro,
também um elástico para o “upper body workout”, porque o corpo não é só pernas! 

2.    A viola: Outro artigo
indispensável, em especial para esta férias, pois é uma excelente forma de
terminar um dia, ou passar uma tarde, tirando uns acordes da viola e cantarolando
umas música. 

3.    Prancha de Surf: Se vamos passar por
praias, que tal experimentar umas ondas? A prancha com certeza vai estorvar
porque ocupa muito espaço, mas também tem lugar marcado nesta aventura. 

4.    Livros: Estar sem fazer nada, de
barriga para o ar, não é bem a minha cena! Levei o livro que estou a ler neste
momento: Patriarcas e Profeta. 

5.    Necessaire: E pronto, também
aquelas coisas necessárias, tipo umas roupas e uns artigos de higiene.

 Mala feita, não se pensa
mais nisso!

Preparação » Férias autocaravana

Em contexto de pandemia, a família sugeriu fazer algo diferente: Umas férias de autocaravana! Creio que não fomos os únicos a ter esta ideia, mas para nós é inédita, porque nunca fizemos algo semelhante! Estamos habituados a hotéis, buffet, piscina, ginásio, avião, que é um bocadinho diferente da provável “canseira” de férias numa autocaravana. Para não abusar das incerteza de que iramos gostar ou não, optámos por um “test-drive” de apenas 5 dias.

1) Aluguer de autocaravanas: Sendo 5 pessoas, a escolha ficou logo limitada, uma vez que a maioria das empresas aluga viaturas com lotação máxima de 4 passageiros. Das hipóteses pesquisadas, a escolha recaiu sobre a campervan – pareceu-nos a mais económica, e a mais “transparente” em todas as condições e * (asteriscos).

2) Escolha do itinerário: Sendo uma experiência, decidimos não abusar do itenerário, marcámos 3 ou 4 locais na bela costa vicentina.

3) Tutoriais para totós: Sendo inexperiente quanto ao assunto, o que me preocupava era a manutenção da caravana! Li algumas coisas, e vi alguns videos no youtube. Descobri o que são águas limpas, cinzentas e pretas (acho que é sonho de qualquer caravanista, vazar a cassete da retrete!!!), e também da energia elétrica, do gás para o fogão etc… etc…. (explico melhor as minhas aquisições de now how à medida que for metendo a mão na massa.

4) Elenco para a viagem:  Pai, Mãe, Filha (9 anos) e Filha (14 anos) e a amiga. 

App Icon no Flutter

Anuncios do Admob no Flutter

pubspec.yaml

dependencies:
flutter:
sdk: flutter

# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2
firebase_admob: ^0.9.0+9

AndroidManifest.xml

<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="[ADMOB_APP_ID]"/>

Main

import 'package:firebase_admob/firebase_admob.dart';
 @override
Widget (BuildContext context) {
  FirebaseAdMob.instance.initialize(appId: "[ADMOB_APP_ID]");
  myBanner
..load()
..show(
anchorOffset: 60.0,
horizontalCenterOffset: 10.0,
anchorType: AnchorType.bottom,
);


myInterstitial
..load()
..show(
anchorType: AnchorType.bottom,
anchorOffset: 0.0,
horizontalCenterOffset: 0.0,
);

return Scaffold(

 
MobileAdTargetingInfo targetingInfo = MobileAdTargetingInfo(
keywords: <String>['games', 'game','Kids'],
contentUrl: 'https://flutter.io',
childDirected: false,
testDevices: <String>[], // Android emulators are considered test devices
);

BannerAd myBanner = BannerAd(
adUnitId: [Your Banner.Ad.Id],
size: AdSize.smartBanner,
targetingInfo: targetingInfo,
listener: (MobileAdEvent event) {
print("BannerAd event is $event");
},
);

InterstitialAd myInterstitial = InterstitialAd(
adUnitId: [Your Interstitial.Ad_Id],
targetingInfo: targetingInfo,
listener: (MobileAdEvent event) {
print("InterstitialAd event is $event");
},
);

 

JunKenPon – Como eu fiz este aplicativo em Flutter (#2 Gesture Detector)

#1 – Criação do Interface

https://www.youtube.com/watch?v=vTLN67NKk4s

import 'package:flutter/material.dart';
import 'package:jankenpon/Game.dart';

void main(){
runApp(MaterialApp(
home: Game(),
debugShowCheckedModeBanner: false,
));
}
import 'dart:math';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

class Game extends StatefulWidget {
@override
_GameState createState() => _GameState();
}

class _GameState extends State<Game> {

var _imageAppChoice=AssetImage("images/base.png");
var _batleResult="Batle Field";
var _resultado="";
var _userVictory=0, _appVictory=0;

var _imageBatleResult=AssetImage("images/base.png");

void _selectOption(String userChoice) {
var options = ["rock", "paper", "scissors", "lizard", "spock"];
var number = Random().nextInt(5);
var appChoice = options[number];

//Show App Choice Image
switch (appChoice) {
case "rock":
setState(() {
this._imageAppChoice = AssetImage("images/rock.png");
});
break;
case "paper":
setState(() {
this._imageAppChoice = AssetImage("images/paper.png");
});
break;
case "scissors":
setState(() {
this._imageAppChoice = AssetImage("images/scissors.png");
});
break;
case "lizard":
setState(() {
this._imageAppChoice = AssetImage("images/lizard.png");
});
break;
case "spock":
setState(() {
this._imageAppChoice = AssetImage("images/spock.png");
});
break;
}

//If User Wins: Change Imagem
if(userChoice=="rock" && appChoice == "scissors") {
this._imageBatleResult=AssetImage("images/rock_scissors_win.png");
_batleResult="You Win! Your rock crushed the scissors";
}
if(userChoice=="rock" && appChoice == "lizard") {
this._imageBatleResult=AssetImage("images/rock_lizard_win.png");
_batleResult="You Win! Your rock smashed the lizard";
}
if(userChoice=="lizard" && appChoice == "paper") {
this._imageBatleResult=AssetImage("images/lizard_paper_win.png");
_batleResult="You Win! Your lizard ate the paper";
}
if(userChoice=="lizard" && appChoice == "spock") {
this._imageBatleResult=AssetImage("images/lizard_spock_win.png");
_batleResult="You Win! Your lizard poisoned the Spock";
}
if(userChoice=="spock" && appChoice == "scissors") {
this._imageBatleResult=AssetImage("images/spock_scissors_win.png");
_batleResult="You Win! Your Spock destroyed the scissors";
}
if(userChoice=="spock" && appChoice == "rock") {
this._imageBatleResult=AssetImage("images/spock_rock_win.png");
_batleResult="You Win! Your Spock vaporized the rock";
}
if(userChoice=="scissors" && appChoice == "paper") {
this._imageBatleResult=AssetImage("images/scissors_paper_win.png");
_batleResult="You Win! Your scissors cut the paper";
}
if(userChoice=="scissors" && appChoice == "lizard") {
this._imageBatleResult=AssetImage("images/scissors_lizard_win.png");
_batleResult="You Win! Your scissors beheaded the lizard";
}
if(userChoice=="paper" && appChoice == "rock") {
this._imageBatleResult=AssetImage("images/paper_rock_win.png");
_batleResult="You Win! Your paper covered the rock";
}
if(userChoice=="paper" && appChoice == "spock") {
this._imageBatleResult=AssetImage("images/paper_spock_win.png");
_batleResult="You Win! Your paper disapproves Spock";
}

//Image when user lose
if(appChoice=="rock" && userChoice == "scissors") {
this._imageBatleResult=AssetImage("images/rock_scissors_lose.png");
_batleResult="You Lose! Your scissors were destroyed by the rock";
}
if(appChoice=="rock" && userChoice == "lizard") {
this._imageBatleResult=AssetImage("images/rock_lizard_lose.png");
_batleResult="You Lose! Your lizard was smashed by the rock";
}
if(appChoice=="lizard" && userChoice == "paper") {
this._imageBatleResult=AssetImage("images/lizard_paper_lose.png");
_batleResult="You Lose! Your paper was eaten by the lizard";
}
if(appChoice=="lizard" && userChoice == "spock") {
this._imageBatleResult=AssetImage("images/lizard_spock_lose.png");
_batleResult="You Lose! Your Spock was poisoned by the lizard";
}
if(appChoice=="spock" && userChoice == "scissors") {
this._imageBatleResult=AssetImage("images/spock_scissors_lose.png");
_batleResult="You Lose! Your scissors were destroyed by Spock";
}

if(appChoice=="spock" && userChoice == "rock") {
this._imageBatleResult=AssetImage("images/spock_rock_lose.png");
_batleResult="You Lose! Your rock was vaporized by Spock";
}
if(appChoice=="scissors" && userChoice == "paper") {
this._imageBatleResult=AssetImage("images/scissors_paper_lose.png");
_batleResult="You Lose! Your paper was cut by scissors";
}
if(appChoice=="scissors" && userChoice == "lizard") {
this._imageBatleResult=AssetImage("images/scissors_lizard_lose.png");
_batleResult="You Lose! Your lizard was beheaded by scissors";
}
if(appChoice=="paper" && userChoice == "rock") {
this._imageBatleResult=AssetImage("images/paper_rock_lose.png");
_batleResult="You Lose! Your rock was covered by the paper";
}
if(appChoice=="paper" && userChoice == "spock") {
this._imageBatleResult=AssetImage("images/paper_spock_lose.png");
_batleResult="You Lose! Your Spock was disapproved by the paper";
}


//Check if user wins
if (
(userChoice == "rock" && appChoice == "scissors") ||
(userChoice == "rock" && appChoice == "lizard") ||
(userChoice == "lizard" && appChoice == "paper") ||
(userChoice == "lizard" && appChoice == "spock") ||
(userChoice == "spock" && appChoice == "scissors") ||
(userChoice == "spock" && appChoice == "rock") ||
(userChoice == "scissors" && appChoice == "paper") ||
(userChoice == "scissors" && appChoice == "lizard") ||
(userChoice == "paper" && appChoice == "rock") ||
(userChoice == "paper" && appChoice == "spock")
) {
setState(() {
_userVictory=_userVictory+1;
_resultado="win";
});

//Check if App wins
} else if (
(appChoice == "rock" && userChoice == "scissors") ||
(appChoice == "rock" && userChoice == "lizard") ||
(appChoice == "lizard" && userChoice == "paper") ||
(appChoice == "lizard" && userChoice == "spock") ||
(appChoice == "spock" && userChoice == "scissors") ||
(appChoice == "spock" && userChoice == "rock") ||
(appChoice == "scissors" && userChoice == "paper") ||
(appChoice == "scissors" && userChoice == "lizard") ||
(appChoice == "paper" && userChoice == "rock") ||
(appChoice == "paper" && userChoice == "spock")
) {
setState(() {
_appVictory=_appVictory+1;
_resultado="lose";

});

//Else - Draw!
} else {
setState(() {
_batleResult = "Draw! You chose the same as the App!";
this._imageBatleResult=AssetImage("images/draw.png");
_resultado="draw";
});
}
}

@override
Widget build(BuildContext context) {

return Scaffold(
appBar: AppBar(
title: Text("JanKenPon")
),
body: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Padding(
padding: EdgeInsets.only(top: 6, bottom: 4),
child: Text(
"App choice",
textAlign: TextAlign.right,
style: TextStyle(
fontSize: 12,
fontWeight: FontWeight.bold
),
),
),
Image(image: this._imageAppChoice, height: 60,),
Padding(
padding: EdgeInsets.only(top: 6, bottom: 6, left: 6, right: 6),
child: Text(
this._batleResult,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 14,
fontWeight: _resultado=="win"? FontWeight.bold : FontWeight.normal ,
color: _resultado=="win"? Colors.green : _resultado=="lose"? Colors.deepOrange : Colors.black,
),
),
),
Image(image: this._imageBatleResult, height: 90,),
Padding(
padding: EdgeInsets.only(top: 6, bottom: 4),
child: Text(
"Choose your option",
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 12,
fontWeight: FontWeight.bold
),
),
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
GestureDetector(
onTap: ()=>_selectOption("rock"),
child: Image.asset("images/rock.png", height: 80,),

),
GestureDetector(
onTap: ()=>_selectOption("paper"),
child: Image.asset("images/paper.png", height: 70,),
),
GestureDetector(
onTap: ()=>_selectOption("scissors"),
child: Image.asset("images/scissors.png", height: 70,),
),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
GestureDetector(
onTap: ()=>_selectOption("lizard"),
child: Image.asset("images/lizard.png", height: 70,),
),
GestureDetector(
onTap: ()=>_selectOption("spock"),
child: Image.asset("images/spock.png", height: 70,),
),
],
),
Padding(
padding: EdgeInsets.only(top: 12, bottom: 0),
child: Text(
"You: $_userVictory | App: $_appVictory",
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 20,
fontWeight: _userVictory>_appVictory ? FontWeight.bold : FontWeight.normal ,
color: _userVictory>_appVictory ? Colors.green : _appVictory>_userVictory ? Colors.deepOrange : Colors.black,
),
),
),
]),
);
}
}

 leo.name: jankenpon

description: A new Flutter application.

# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.0.0+1

environment:
sdk: ">=2.1.0 <3.0.0"

dependencies:
flutter:
sdk: flutter

# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2


dev_dependencies:
flutter_test:
sdk: flutter


# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec

# The following section is specific to Flutter.
flutter:

# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true

# To add assets to your application, add an assets section, like this:
# assets:
# - images/a_dot_burr.jpeg
# - images/a_dot_ham.jpeg

assets:
- images/base.png
- images/lizard.png
- images/lizard_paper_lose.png
- images/lizard_paper_win.png
- images/lizard_spock_lose.png
- images/lizard_spock_win.png
- images/logo.png
- images/paper.png
- images/paper_rock_lose.png
- images/paper_rock_win.png
- images/paper_spock_lose.png
- images/paper_spock_win.png
- images/rock.png
- images/rock_lizard_lose.png
- images/rock_lizard_win.png
- images/rock_scissors_lose.png
- images/rock_scissors_win.png
- images/scissors.png
- images/scissors_lizard_lose.png
- images/scissors_lizard_win.png
- images/scissors_paper_lose.png
- images/scissors_paper_win.png
- images/spock.png
- images/spock_rock_lose.png
- images/spock_rock_win.png
- images/spock_scissors_lose.png
- images/spock_scissors_win.png
- images/draw.png

# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware.

# For details regarding adding assets from package dependencies, see
# https://flutter.dev/assets-and-images/#from-packages

# To add custom fonts to your application, add a fonts section here,
# in this "flutter" section. Each entry in this list should have a
# "family" key with the font family name, and a "fonts" key with a
# list giving the asset and other descriptors for the font. For
# example:
# fonts:
# - family: Schyler
# fonts:
# - asset: fonts/Schyler-Regular.ttf
# - asset: fonts/Schyler-Italic.ttf
# style: italic
# - family: Trajan Pro
# fonts:
# - asset: fonts/TrajanPro.ttf
# - asset: fonts/TrajanPro_Bold.ttf
# weight: 700
#
# For details regarding fonts from package dependencies,
# see https://flutter.dev/custom-fonts/#from-packages

JunKenPon – Como eu fiz este aplicativo em Flutter

#1 – Criação do Interface

import 'package:flutter/material.dart';
import 'package:jankenpon/Game.dart';

void main(){
runApp(MaterialApp(
home: Game(),
debugShowCheckedModeBanner: false,
));
}
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

class Game extends StatefulWidget {
@override
_GameState createState() => _GameState();
}

class _GameState extends State<Game> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("JanKenPon")
),
body: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Padding(
padding: EdgeInsets.only(top: 24, bottom: 8),
child: Text(
"App choice",
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 22,
fontWeight: FontWeight.bold
),
),
),
Image.asset("images/base.png", height: 80,),
Padding(
padding: EdgeInsets.only(top: 24, bottom: 8),
child: Text(
"Batle field",
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 22,
fontWeight: FontWeight.bold
),
),
),
Image.asset("images/base.png", height: 120,),
Padding(
padding: EdgeInsets.only(top: 24, bottom: 8),
child: Text(
"Choose your option",
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 22,
fontWeight: FontWeight.bold
),
),
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Image.asset("images/rock.png", height: 80,),
Image.asset("images/paper.png", height: 80,),
Image.asset("images/scissors.png", height: 80,),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Image.asset("images/lizard.png", height: 80,),
Image.asset("images/spock.png", height: 80,),
],
),
Padding(
padding: EdgeInsets.only(top: 24, bottom: 8),
child: Text(
"- Points -",
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 22,
fontWeight: FontWeight.normal,
),
),
),
]),
);
}
}

WebView




https://youtu.be/3RAlKq5vz1I

package com.byronsystemdeveloper.byronsystemdeveloper;

import android.graphics.Bitmap;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebResourceRequest;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

public class MainActivity extends AppCompatActivity {

private ProgressBar progressBar;
private WebView webView;
private WebSettings webSettings;
private String url;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

progressBar=findViewById(R.id.progressBar);
webView=findViewById(R.id.webView);
url="http://34.105.161.132";
webView.loadUrl(url);
webSettings=webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.setWebViewClient(new mWebViewClient());

}

private class mWebViewClient extends WebViewClient {

@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(url);
return true;
}

@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
progressBar.setVisibility(View.VISIBLE);
super.onPageStarted(view, url, favicon);
}

@Override
public void onPageFinished(WebView view, String url) {
progressBar.setVisibility(View.GONE);
super.onPageFinished(view, url);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<WebView
android:id="@+id/webView"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" >

</WebView>

<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:layout_editor_absoluteX="172dp"
tools:layout_editor_absoluteY="333dp" />
</android.support.constraint.ConstraintLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.byronsystemdeveloper.byronsystemdeveloper" >

<uses-permission android:name="android.permission.INTERNET"/>

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>