Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Solução assíncrona

Boa tarde, tudo bem? Eu não entendi muito bem o que é a solução assíncrona? O que são os "thread" que o professor cita na aula???

2 respostas
solução!

Fala Paulo, tudo certo?

Relaxa, isso é um pouco mais complicado mesmo.

Nós estamos acostumados a pensar na programação síncrona. O que isso quer dizer? Basicamente que cada linha vai ser executada imediatamente depois da outra.

Vamos ver no exemplo:

print(1); // Linha 01
print(2); // Linha 02
print(3); // Linha 03

É claro, esperamos que seja impresso na tela:

1
2
3

MAS, essa realidade muda na programação assíncrona.

Mas primeiro, qual a razão de existir esse tipo de programação???? Simples, nem tudo no mundo pode ser executado imediatamente! Imagina buscar uma informação no Disco Rígido, ele é muito mais lento que o processador, então o processador vai ter que esperar! Mesma coisa se você tentar buscar algo na Internet.

Então, pra isso a gente precisa criar uma parte do código que só vá ser executada quando esses processos mais lentos terminarem. Isso é a thread, numa enorme simplificação, uma execução paralela de código.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Entenda o Processo como seu app rodando, e cada thread é uma parte do código que roda paralelamente.


Fechou no conceito? Vamo para prática!

O Flutter lida de duas formas diferentes com programação assíncrona, você vai ver ambas no curso. A primeira é a then, que pode ser traduzido para depois, e eu gosto de entender como depois que terminar. Basicamente o que tiver dentro desse bloco só vai ser executado quando esse processo lento (Future) terminar. Vamos ao exemplo.

print(1); 
print(2);
Future.delayed(Duration(seconds: 2)).then((value) {
                print(3);
              }); // Essa função apenas pede para que o código espere 2 segundos, serve para simular uma operação demorada.
print(4);
print(5);

Ao contrário do que esperaríamos, o que vai ser impresso na tela é:

1
2
4
5
3

Então você pode entender aquela linha como: Depois que terminar essa espera por 2 segundos, só aí você imprime o 3. E ah, uma coisa muito importante: usando then, você não para a execução das linhas originais. O que quer dizer, que MUITÍSSIMO PROVAVELMENTE (já que isso depende da velocidade do processador, que faz bilhões dessas operações por segundo) o print(4); print(5); vão ser executados primeiro.


A outra forma, você vai ver no curso também, é usando async/await. Basicamente você diz pro Dart que a função pode parar a qualquer momento e se tornar uma função de resposta atrasada (o famoso Future). Mas, para não confundir, é melhor você ver essa parte no curso!

Show de bola? Espero ter sido claro, e qualquer coisa estamos aqui!

Show de bola!!! Essa explicação é uma obra de arte.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software