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.
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');