@WellsSA
@WellsSA
- Tempo
- Processamento assíncrono
- Future: recebe algo que pode acontecer num futuro próximo
- Builder: constrói algo
Não
Acontece simultaneamente
// PSeudo JS Example
function metodoRapido () {
// Itera (percorre) um array de 10 elementos
...
}
function metodoDemorado () {
// Itera um array de 10_000_000 elementos
...
}
// Quando você chama
metodoDemorado();
metodoRapido();
// a ordem que você recebe o retorno
metodoRapido();
metodoDemorado();
Lição de casa: http e websockets
http://
ws://
ws://
- Future: recebe um processo assíncrono (não somente requisições)
- Builder: recebe uma função que diz qual Widget deve ser construído.
response
request
@WellsSA
@WellsSA
http.get('https://pokeapi.co/api/v2/pokemon/')
{
"count": 964,
"next": "https://pokeapi.co/api/v2/pokemon/?offset=20&limit=20",
"previous": null,
"results": [
{
"name": "bulbasaur",
"url": "https://pokeapi.co/api/v2/pokemon/1/"
},
{
"name": "ivysaur",
"url": "https://pokeapi.co/api/v2/pokemon/2/"
},
{
"name": "venusaur",
"url": "https://pokeapi.co/api/v2/pokemon/3/"
},
{
"name": "charmander",
"url": "https://pokeapi.co/api/v2/pokemon/4/"
}
]
}
FutureBuilder(
future: http.get('https://pokeapi.co/api/v2/pokemon/'),
builder: (context, snapshot) {
...
}
)
FurureBuilder
snapshot
@WellsSA
AsyncSnapshot
@WellsSA
snapshot.connectionState
switch (snapshot.connectionState) {
case ConnectionState.none:
return Text('Aperte para iniciar.');
case ConnectionState.active:
case ConnectionState.waiting:
return Text('Esperando requisição...');
case ConnectionState.done:
return Text('Uhul, acabou!');
}
@WellsSA
@WellsSA
@WellsSA
@WellsSA
@WellsSA
@WellsSA
@WellsSA
@WellsSA
@WellsSA
@WellsSA
Instalando dependências + flutter pub get
@WellsSA
@WellsSA
@WellsSA