Skip to main content

· 3 min read

Youtube

Para complementar este post, também há o vídeo no youtube.

Novidades

A versão 3 do Flutter foi apresentado no Google I/O de 2022.

O grande destaque desta nova versão é que o framework está com suporte estável para macOS e Linux, atingindo 6 plataformas diferentes à partir da mesma codebase.

Outras 3 funcionalidade que chamaram a atenção foram:

Material 3

A nova geracao do Material Design está progressivamente sendo implementada, trazendo um novo esquema de cores, melhorias na tipografia novos componentes e uma capacidade muito maior na personalizacão dos aplicativos. Acompanhe a issue e fique por dentro das atualizacões.

https://github.com/flutter/flutter/issues/91605


Firebase Crashlytics

Agora é possível acessar em tempo real os relatórios de "crash" (com stacktrace completo) do seu aplicativo, algo antes exclusivo aos apps nativos. Vale ressalver que este recurso do Firebase é gratuito.


Flutter Web

Utilizando a API ImageDecoder (nos browsers que oferecem suporte) a decodificaćão de imagens ficou 2x mais rápida. E a nova API do Flutter que controla o ciclo de vida de um aplicativo agora fornece um controle maior da inicializaćão. Confira os detalhes no link

https://docs.flutter.dev/development/platform-integration/web/initialization


Performance

Como de costume, toda atualizacão do traz consigo melhorias em performance e desta vez não foi diferente. Basta atualizar a versão e executar o seu aplicativo.


Casual Games Toolkit

Um outra novidade que deixou muita gente empolgada é o . Um conjunto recursos para criar jogos casuais utilizando Flutter.

https://flutter.dev/games


Dart 2.17

A nova versão da linguagem Dart foi anunciada, trazendo como grandes novidades:

Enums

Agora é possível adicionar propriedades/métodos à um Enum.

enum FlutterBootcamp {
kura('setState'),
libria('testes'),
civitas('firebase');

final String conteudo;

const FlutterBootcamp(this.conteudo);

String exibirConteudo() {
return 'O principal conteúdo deste app é: $conteudo';
}
}

void main() => print(FlutterBootcamp.civitas.exibirConteudo());

Super initializers

A passagem de parametro para "super-classe" (ou classe mãe) ficou mais simples:

class Bootcamp {
String? linguagem;
Bootcamp({this.linguagem});
...
}

// Antes
class FlutterBootcamp extends Bootcamp {
FlutterBootcamp({String? linguagem}) : super(linguagem: linguagem);
}

// Depois
class FlutterBootcamp extends Bootcamp {
FlutterBootcamp({super.linguagem});
}

Named args

Os named arguments podem ser informados em qualquer ordem. Não precisam ser declarados no final do construtor.

class FlutterBootcamp {
final String? conteudo;
final int? aplicativos;

const FlutterBootcamp(this.conteudo, {this.aplicativos});
}

// antes
FlutterBootcamp('Do básico ao avançado', aplicativos: 6);

// depois
FlutterBootcamp(aplicativos: 6, 'Do básico ao avançado');

· 2 min read

Neste post, vamos explorar um dos conceitos mais importantes para quem está começando com Flutter: o ciclo de vida dos widgets.

Voçe já deve saber que em Flutter, tudo é um widget e que temos 2 tipos: Stateless e o Stateful.

E a diferença entre eles é o objeto State, pois ele confere ao Stateful o poder da mutação enquanto o Stateless permanece imutável.

O construtor destes widgets tem a mesma estrutura:

class GreenFrog extends StatelessWidget {
const GreenFrog({ Key? key }) : super(key: key);


Widget build(BuildContext context) {
return Container(color: const Color(0xFF2DBD3A));
}
}
class YellowBird extends StatefulWidget {
const YellowBird({ Key? key }) : super(key: key);


State<YellowBird> createState() => _YellowBirdState();
}

Ambos aos serem implementados, fazem override diferentes: método build no Stateless e o Stateful faz do createState(), nos obrigando à implementar _YellowBirdState().

E nele nós temos o seguinte código:

class _YellowBirdState extends State<YellowBird> {

Widget build(BuildContext context) {
return Container(color: const Color(0xFFFFE306));
}
}

E é aqui que a mágica acontece. Graças ao objeto State, podemos mudar a cor do Container de amarelo para vermelha, usando o `setState()`. Algo impossível de se fazer em no GreenFrog, que possui a cor verde e por ser um Stateless widget, é imutável.

Até aqui deduzimos então que:

tip

Stateless e Stateful widgets possuem o mesmo ciclo de vida. Quando o construtor é invocado, eles executam o mesmo override.

E como vimos anteriormente, o Stateful possui o override ao método createState() e que o retorno é um objeto State.

E é exatamente aqui que aprofundamos quando se trata do “ciclo de vida dos widgets”.

Sendo bem rigorosos, podemos afirmar que o “ciclo de vida”, portanto, trata-se do objeto State e não do Stateless/Stateful.

Sendo menos rigorosos, podemos afirmar que o “ciclo de vida” de um Stateful é mais amplo, pois envolve também o objeto State, afinal, não é possível criar um Stateful sem ter um objeto State.

No próximo post, iremos abordar os métodos o initState e o dispose, pois são eles que acompanham a criação e destruição do objeto State (do Stateful widget).

· One min read

Depois de 3 anos e quase 130 commits, esta é a nova versão do site. Muita coisa mudou no Flutterverse, mas o desejo em continuar compartilhando conteúdo de qualidade para a comunidade continuam iguais.

Assim como o Flutter evoluiu, o flutterparainiciantes.com.br também não poderia ficar para trás.

Conteúdo revisado && atualizado. O site está muito mais completo.

E agora tem um blog.

Tudo para deixar o seu aprendizado mais fácil.

Até mais ✌️