Este lançamento é um dos mais marcantes para mim nos últimos anos. Estamos avançando não apenas devido ao surgimento de novos widgets que não vão surpreender ninguém, mas também devido a sérias mudanças de infraestrutura, além do suporte operacional para novos sistemas operacionais. É só o começo!
Dirigiu para se familiarizar com a nova versão do Flutter 1.22.
Temos o prazer de anunciar o lançamento mais recente do Flutter com amplo suporte para iOS 14 e Android 11. O Flutter 1.22 se baseia nas bases estabelecidas por versões anteriores e permite que os desenvolvedores criem interfaces de usuário rápidas e bonitas para várias plataformas a partir de uma única base de código. Nossas versões trimestrais estáveis contêm novos recursos, desempenho aprimorado e correções de bugs.
Novas versões do sistema operacional móvel foram lançadas recentemente. Nos concentramos em fazer com que o Android 11 e o iOS 14 tenham um bom desempenho nesta versão do Flutter.
Atualização do Flutter para iOS 14 : suporte para o novo Xcode 12, novos ícones e suporte para App Clips - um análogo de Instant Apps para Android.
Atualização Flutter para Android 11: adicionado suporte para diferentes tipos de "estrondos" para telas, bem como animação mais suave ao chamar o teclado virtual.
Este lançamento é lançado apenas dois meses após o lançamento da versão 1.20, mas mesmo nesse curto período de tempo fechamos 3024 edições e congelamos 1944 PRs de 197 contribuidores.
Comentário
A propósito, se você há muito deseja se tornar um colaborador do Flutter, mas não sabe por onde começar, aqui estão algumas dicas. Filtre os problemas pela boa primeira tag de contribuição : de vez em quando, aparecem problemas interessantes, com os quais você pode iniciar sua jornada para o código aberto. Além disso, você pode implementar um recurso do sonho de alguém filtrando os problemas pela nova tag de recurso . Existem quebra-cabeças mesmo para iniciantes. Você será capaz de imortalizar seu nome na história do framework - é claro, se os desenvolvedores do Flutter-team concordarem que tal recurso deve ser implementado.
Além de oferecer suporte a novas versões do sistema operacional móvel, temos outras novidades, incluindo uma prévia de um dos recursos mais solicitados do Android:
- restauração do estado,
- novo material "universo" de botões,
- nova biblioteca para apoiar localização e internacionalização, trabalhando com Hot Reload,
- novo navegador,
- versão estável para Platform Views (base para plug-ins do Google Maps e WebView),
- uma opção que você pode adicionar ao seu código para melhorar a rolagem em dispositivos com telas de alta frequência.
Também temos uma nova ferramenta para analisar o tamanho dos aplicativos. Além disso, os desenvolvedores agora podem criar plug-ins apenas para as plataformas de que precisam, especificando explicitamente as plataformas de destino na configuração do plug-in.
Plataforma de destino IOS 14
Cada vez que uma nova versão de um sistema operacional móvel é anunciada, nós a testamos exaustivamente: procuramos incompatibilidades ou alterações que possam afetar o funcionamento do Flutter e de suas ferramentas.
No caso do iOS 14, fizemos algumas alterações no Flutter para garantir que funcione exatamente como os desenvolvedores desejam:
- O Xcode 12 requer iOS 9.0 ou superior, então nosso modelo padrão agora especifica 9.0 em vez da plataforma 8.0.
- Flutter 1.22 corrige travamentos específicos do iOS 14 e problemas de renderização de fontes.
- Problemas com a implantação em dispositivos físicos (o aplicativo não rodava no dispositivo - apenas no emulador) foram corrigidos no Flutter 1.20.4.
- , , , Flutter Flutter 1.20.4.
- Flutter iOS 14 ( , Flutter-).
Conclusão: se iOS 14 for a plataforma de destino para seu aplicativo Flutter, recomendamos fortemente que você reconstrua com Flutter 1.22 e implante-o na App Store agora para fornecer a melhor experiência de usuário para aqueles com iOS 14.
Mais informações, incluindo para algumas ideias sobre Add-to-App, links diretos e notificações, consulte a documentação do iOS 14 em flutter.dev .
Separadamente, gostaríamos de falar sobre o suporte atualizado para a nova fonte iOS SF Symbols, que nos inspirou a passar algum tempo atualizando o pacote cupertino_icon . Os casos de uso existentes
CupertinoIconsserão exibidos automaticamente no novo estilo assim que você atualizar a dependênciacupertino_iconspara a nova versão principal 1.0. Se você estiver usando o cupertino_icons1.0 junto com o Flutter 1.22, terá acesso a aproximadamente 900 novos ícones por meio da API CupertinoIcons .
Para obter uma lista completa de ícones, consulte a página de visualização cupertino_icons e a página de detalhes de migração em flutter.dev .
Outro recurso que você pode experimentar com o Flutter no iOS 14 são os clipes de aplicativos. Clipes de aplicativos são um novo recurso do iOS 14: são mini-aplicativos com até 10 MB. Eles fornecem ao usuário acesso a certas funções sem ter que baixar o aplicativo completo da AppStore. A versão 1.22 do Flutter pode funcionar com os clipes de aplicativo em uma implementação preliminar.
Clipes de aplicativos no Flutter
Para obter mais informações sobre como criar App Clips de aplicativos usando Flutter, consulte a documentação em flutter.dev . Veja também um exemplo de projeto simples .
Comentário
Lembre-se de Instant Apps para Android? Parece que a Apple decidiu trazer de volta nosso 2017 e apresentou uma solução semelhante - App Clips. Além disso, você pode implementar clipes de aplicativo mesmo se não estiver escrevendo um aplicativo nativo, mas um aplicativo multiplataforma.
Não se esqueça das limitações: se sua montagem pesar mais de 10 MB, não funcionará executá-la no formato App Clips. No caso de uma aplicação Flutter, esse pode ser um problema realmente urgente. Mas você aprenderá sobre isso na segunda metade do artigo: lá, vamos lhe dizer como você pode monitorar o tamanho de compilação de seu aplicativo usando uma ferramenta útil.
Android 11
Este lançamento do Flutter saiu quase simultaneamente com o lançamento do Android 11. A estrutura e o mecanismo do Flutter foram atualizados para oferecer suporte a dois novos recursos introduzidos na versão mais recente do Android.
Em primeiro lugar, o Flutter agora leva em conta a localização das franjas e recortes na tela do telefone Android, bem como as bordas arredondadas da tela.
Usando as APIs MediaQuery e SafeArea , agora é fácil escrever uma IU em que as áreas clicáveis não caiam em recortes e bordas arredondadas da tela.
A área visível do aplicativo não muda de tamanho abruptamente, mas suavemente. O conteúdo do aplicativo irá rolar em sincronia com o teclado na tela.
Preste atenção ao problema FAB
nº 19279- problema de longa data em que a animação de exibição / ocultação do teclado na tela não sincroniza com a inserção do Flutter. Isso foi corrigido no Android 11.
Anteriormente, havia problemas devido aos plug-ins Flutter quando o código do Flutter era inserido em um aplicativo Android nativo. Reescrevemos a API para integração do Flutter com o Android e lançamos a API v2, que não tem essas deficiências. A partir da versão 1.22, estamos descontinuando o suporte para a API v1 antiga.
Se você continuar a usar a API Android v1, isso significa para você:
- Novos plug-ins são criados sem suporte para API v1.
- O sinalizador de configuração da ferramenta Flutter
—no-enable-android-embedding-v2foi removido. Este é o comportamento padrão agora.
- Os aplicativos mais antigos que ainda usam a API v1 exibirão um aviso de suspensão de uso durante a compilação, que se refere à documentação para suportar novas APIs de plug-in do Android .
Enquanto isso, se você ainda tiver um aplicativo Flutter baseado na API versão 1 para Android, ele continuará funcionando. No entanto, você pode começar a ver novos plug-ins direcionados à API v2. Eles não podem ser usados pelo Android API v1. Para obter mais informações, consulte a documentação sobre alterações importantes .
, Flutter , . 1.22 , — . App Clips, ( ) , . Android, , , — . .
«»
Os botões Flutter existentes são bonitos, mas podem ser difíceis de usar , especialmente se você precisar de temas personalizados. Além disso, a especificação do material foi expandida para incluir novos botões com novos estilos.
Para acompanhar as diretrizes de materiais, estamos introduzindo um novo "universo" de botões no Flutter 1.22.
Novo "universo" de botões de design de material
Novos widgets e temas têm novos nomes de classes. Renomeamos as classes no Flutter para corresponder às especificações do Material Design .
Os novos temas seguem o padrão "normalizado" que o Flutter adotou recentemente para novos widgets de Material. Versão Demo em DartPad
Esta não é uma alteração de quebra, porque a semântica
FlatButton, OutlineButton,RaisedButton, ButtonBar, ButtonBarThemeE ButtonThemenão vai mudar. Você pode misturar e combinar botões antigos com novos.
Novo suporte para internacionalização e localização
A funcionalidade principal de que você precisa para internacionalizar (i18n) e localizar (l10n) seus aplicativos está disponível no Flutter desde o início. Nesta versão, oferecemos suporte para recarregamento ativo para atualizar seu aplicativo à medida que novas informações l10n são adicionadas.
Se você precisar de mais informações sobre o suporte do Flutter l10n, incluindo mensagens localizadas, mensagens com parâmetros, datas, números e moedas, leia o Guia do usuário de internacionalização do Flutter .
Além disso, se você estiver interessado em i18n e l10n, pode ser necessário usar strings com caracteres que não cabem no ASCII antigo, como Unicode e emoji. A equipe Dart lançou recentemente o pacote de personagensque ajuda os desenvolvedores a trabalhar com clusters de grafemas Unicode (aprimorados). Este pacote ajuda a resolver problemas como encurtar adequadamente uma string como "Texto de emoji com bandeira britânica em inglês" para os primeiros 15 caracteres. Usando a classe
String, essa abreviação seria "Um texto [emoji com a bandeira britânica]", que tem apenas 12 caracteres legíveis pelo usuário. Por outro lado, usar o pacote charactersfornece a abreviatura correta "A [British flag emoji] text in Eng".
Com este PR, Flutter usa um pacote de personagens para lidar com esses personagens complexos corretamente. Por exemplo, quando usado
TextFieldcom uma restrição maxLength, caracteres como [família de três emoji] agora são contados corretamente como um caractere. Além disso, com este PRo pacote de símbolos está automaticamente disponível em projetos Flutter, sem a necessidade de adicioná-lo manualmente. Esperançosamente, isso torna mais fácil trabalhar com strings de todos os tipos em todos os locais. Para saber mais sobre o pacote de símbolos, consulte o excelente artigo " Manipulação Adequada de Cordas em Dardos ".
Os plug-ins do Google Maps e WebView podem ser usados em aplicativos de produção
Na equipe do Flutter, muitas vezes temos medo de rotular algo como “pronto para produção” até que nós mesmos o testemos. No caso dos google_maps_flutter e webview_flutter plugins, a principal razão para o atraso foi no subjacente Platform Vistas implementação , que permite a hospedagem de componentes de interface nativa de ambos Android e iOS em um aplicativo de vibração. Nesta versão do Flutter, temos o prazer de anunciar que fortalecemos a infraestrutura o suficiente para declarar esses plug-ins prontos para uso.
Plugin webview_flutter exibindo flutter.dev
No Flutter 1.22, adicionamos uma implementação alternativa de Platform Views que remove todos osproblemas de teclado e problemas de acessibilidade no Android Views . Isso funciona com a API Android de nível 19 e superior (nível 20 exigido anteriormente). Também fizemos melhorias nos streams do iOS que tornam as visualizações da plataforma mais eficientes e confiáveis (e não exigem mais a adição de um sinalizador
io.flutter.embedded_views_previewao iOS Info.plist).
O plug-in
webview_fluttersuporta o novo modo de visualizações da plataforma Android, mas atualmente precisa ser ativado manualmente . Quando se tornar mais difundido na comunidade, vamos habilitá-lo por padrão.
Os plug-ins do Google Maps e WebView já se beneficiaram de melhorias no Platform Views.
Se você deseja usar Platform Views para hospedar elementos de IU personalizados no iOS e Android, leia mais sobrevisualizações nativas do Android e iOS no aplicativo Flutter .
Comentário
Mais um acontecimento agradável que não traz nenhuma mudança revolucionária na vida do desenvolvedor. Há muito tempo que usamos esses dois plug-ins em produção e não temos dificuldade. Esperamos que a entrada no estágio de "produção pronta" não mude essa situação. Ficaríamos muito mais felizes em ver um plug-in oficial para suporte ao Yandex MapKit. Até que isso aconteça, tudo o que resta é usar soluções de terceiros .
Navigator 2.0
Se você já usou a navegação em seus aplicativos Flutter antes , deve ter notado que a estrutura de dados principal, a pilha de páginas que o usuário navega, está oculta para você. Em vez disso, você chama
Navigator.pop()ou para controlá-lo Navigator.push().
Suponha que você queira exibir uma lista de widgets em sua página inicial e permitir que o usuário clique em um deles para ir para a página de detalhes daquela cor específica.
Duas telas podem ser implementadas assim:
class ColorListScreen extends StatelessWidget {
final List<Color> colors;
final void Function(Color color) onTapped;
ColorListScreen({this.colors, this.onTapped});
@override
Widget build(BuildContext context) => Scaffold(
appBar: AppBar(title: Text('Colors')),
body: Column(
children: [
// you can see and decide on every color in this list
for (final color in colors)
Expanded(
child: GestureDetector(
child: Container(color: color),
onTap: () => onTapped(color),
),
)
],
),
);
}
class ColorScreen extends StatelessWidget {
final Color color;
const ColorScreen({this.color});
@override
Widget build(BuildContext context) => Scaffold(
appBar: AppBar(title: Text('Color')),
body: Container(color: color),
);
}
Usando o estilo mais simples, o Navigator 1.0 permite que você navegue entre as duas telas. Parece muito fácil:
class _ColorAppState extends State<ColorApp> {
List<Color> _colors = [Colors.red, Colors.green, Colors.blue];
@override
Widget build(BuildContext context) => MaterialApp(
title: 'Color App',
home: Builder(
builder: (context) => ColorListScreen(
colors: _colors,
// the Navigator manages the list of pages itself; you can only push and pop
onTapped: (color) => Navigator.push(
context,
MaterialPageRoute(builder: (context) => ColorScreen(color: color)),
),
),
),
);
}
Uma chamada
Navigator.push()é tudo o que precisa para colocar outra página no topo da primeira, criando uma pilha de duas páginas. No entanto, ao contrário da lista de contêineres criados no método de construção ColorListScreen, essa pilha está oculta para você. E porque está oculto, é difícil de gerenciar em outros cenários, como lidar com links diretos de rota inicial fornecidos, por exemplo, por incorporação nativa, ou uma URL da Internet ou uma intenção do Android. Também é extremamente difícil gerenciar o roteamento aninhado entre diferentes estruturas da mesma página.
O Navigator 2.0 aborda esses e outros problemas, tornando a pilha de páginas visível. Aqui está um exemplo atualizado de uma transição entre o mesmo
ColorListScreene ColorScreen:
class _ColorAppState extends State<ColorApp> {
Color _selectedColor;
List<Color> _colors = [Colors.red, Colors.green, Colors.blue];
@override
Widget build(BuildContext context) => MaterialApp(
title: 'Color App',
home: Navigator(
// you can see and decide on every page in this list
pages: [
MaterialPage(
child: ColorListScreen(
colors: _colors,
onTapped: (color) => setState(() => _selectedColor = color),
),
),
if (_selectedColor != null) MaterialPage(child: ColorScreen(color: _selectedColor)),
],
onPopPage: (route, result) {
if (!route.didPop(result)) return false;
setState(() => _selectedColor = null);
return true;
},
),
);
}
O aplicativo cria
Navigatore fornece explicitamente uma lista de páginas que representam a pilha completa. Criamos vazio _selectedColorpara indicar que a cor ainda não foi selecionada, então inicialmente não a mostramos ColorScreen. Quando o usuário seleciona uma cor, chamamos setState()como de costume para dizer ao Flutter que você deseja chamar o método novamente build(), que agora cria uma pilha no ColorScreentopo.
Você atualiza seu estado no retorno de chamada
OnPopPage: por exemplo, se o usuário está de volta na tela, significa que ele "desmarcou" a cor atual e não queremos mais exibir esta página.
Se o Navigator 2.0 se parece com o resto do Flutter, é proposital: é declarativo, ao contrário do imperativo Navigator 1.0. A ideia era combinar modelos de navegação e o resto do Flutter enquanto corrigia muitos bugs e adicionava recursos ao mesmo tempo. Na verdade, este pequeno exemplo apenas arranha a superfície do que está no Navigator 2.0. Para obter detalhes, recomendo enfaticamente o artigo sobre navegação declarativa e roteamento em flutuação .
Você pode continuar a usar o Navigator 1.0: ele funcionará da mesma forma que antes. Não o excluiremos em breve. No entanto, pensamos que se você experimentar o Navigator 2.0, vai adorar.
. , . , , , , . .
, . — Flutter. Navigator 2.0 . Remi Rousselet Twitter, . , . — Surf. , , GitHub: , , , .
: Android
Um novo recurso que você pode experimentar nesta versão é o suporte para restauração de estado no Android . Este é um dos nossos recursos mais cobiçados, com 217 avaliações!
Para aqueles que não estão familiarizados com a necessidade de restaurar o estado, os sistemas operacionais móveis podem eliminar aplicativos que estão em segundo plano para liberar recursos para aplicativos prioritários. Quando isso acontece, o SO notifica o aplicativo que está prestes a "matar": o aplicativo salva rapidamente o estado da interface do usuário para restaurá-lo quando o usuário retornar ao aplicativo.
Quando implementado corretamente, a experiência do usuário é perfeita e os recursos do dispositivo são usados com mais eficiência. Até agora, o Flutter não dava suporte à recuperação do estado e, sem o suporte da estrutura, era muito difícil acertar. Portanto, temos o prazer de fornecer uma implementação básica desse recurso para Android.
Aqui está um exemplo muito simples de restauração do estado do aplicativo Flutter Counter padrão:
class CounterState extends State<RestorableCounter> with RestorationMixin {
@override
String get restorationId => widget.restorationId;
RestorableInt _counter = RestorableInt(0);
@override
void restoreState(RestorationBucket oldBucket) => registerForRestoration(_counter, 'count');
void _incrementCounter() => setState(() => _counter.value++);
@override
Widget build(BuildContext context) => Scaffold(
body: Center(child: Text('${_counter.value}')),
floatingActionButton: FloatingActionButton(onPressed: _incrementCounter),
);
}
Resumindo, cada widget obtém um segmento de armazenamento que é registrado com RestorationMixin usando um identificador único. Usando um RestorableProperty (
RestorableIntcomo este aqui) para armazenar dados específicos da IU e registrando esses dados com a função de restauração de estado, os dados são salvos automaticamente antes que o Android saia do aplicativo e restaurados quando ele voltar à vida. E é tudo. Todos os dados armazenados em um tipo Restoration*, por exemplo RestorableInt, RestorableStringe RestorableTextEditingController(temos vários), serão restaurados. E se não cobrimos todos os tipos que você gostaria de restaurar, você pode criar o seu próprio, expandindoRestorableProperty.
Para testar automaticamente a recuperação de estado, adicionamos uma nova API restartAndRestore ao WidgetTester . E para o teste manual, o mais fácil é:
- execute o aplicativo Flutter com a restauração de estado habilitada no dispositivo Android,
- habilite a opção "Não salvar ações" nas configurações do desenvolvedor Android,
- iniciar o aplicativo Flutter,
- coloque-o em segundo plano,
- voltar para ele.
O Android irá "matar" e restaurar seu aplicativo, e você verá se tudo funciona conforme o esperado.
Esta versão de restauração do estado é preliminar: ainda há trabalho a ser feito. Por exemplo, a restauração de estado não é apenas um recurso para Android, os aplicativos iOS também podem se beneficiar disso. Além disso, estamos ocupados atualizando nossos próprios widgets para manter seu estado durante a recuperação. Fizemos suporte para classes
Scrollablecomo ListViewe SingleChildScrollView(para lembrar a posição de rolagem do usuário) e TextFields(para restaurar o texto inserido), e planejamos estendê-lo para outros widgets.
No entanto, ainda não adicionamos um recurso importante - suporte à navegação (1.0 ou 2.0), então chamamos esta versão de "preliminar". Ou seja, o aplicativo não será aberto no mesmo local em que o usuário estava. Este recurso estará disponível em breve na versão beta e na próxima versão estável do Flutter.
— . Flutter- UX. — , (, — -), State . Restorable-, RestorationMixin.
, . : , - , , .
:
Trabalhando com nossos parceiros internos no Google, a equipe do Flutter fez melhorias significativas no desempenho de rolagem quando as taxas de entrada e exibição não correspondem. Por exemplo, a entrada do Pixel 4 opera a 120 Hz e a tela opera a 90 Hz. Essa inconsistência pode resultar em um desempenho de rolagem ruim. Com o novo sinalizador,
resamplingEnabledvocê pode resolver este problema:
void main() {
GestureBinding.instance.resamplingEnabled = true;
run(MyApp());
}
Dependendo das discrepâncias de frequência em questão, você pode ver até 97% menos latência de rolagem se habilitar este sinalizador. Em compilações futuras, planejamos habilitar esse sinalizador por padrão.
Nova ferramenta unificada de desenvolvimento de DART
Como sempre, a atualização do Flutter diz respeito não apenas ao mecanismo e à estrutura, mas também às ferramentas. Flutter 1.22 inclui uma nova versão do Dart (2.10), bem como uma nova ferramenta de linha de comando
dartque você também pode achar útil.
Historicamente, o Dart teve muitas pequenas ferramentas de desenvolvedor (como
dartfmtformatação e dartanalyzeranálise de código). O Dart 2.10 possui uma ferramenta de desenvolvimento unificada dartmuito semelhante à ferramenta flutter.
Começando com o Flutter 1.22 SDK, a pasta
<flutter-sdk>/bin(que você provavelmente está PATH) contém os comandos fluttere dart. Para obter mais informações, consulte a postagem do blog Dart 2.10 .
Ferramenta de análise de tamanho de aplicativo
As ferramentas lançadas como parte do Flutter 1.22 incluem um novo utilitário de análise de tamanho de compilação. Essa ferramenta ajuda a diagnosticar se o tamanho do seu aplicativo está inchando com o tempo.
Você pode usar esta ferramenta para coletar dados para análise. Passe a bandeira com
--analysis-sizequalquer um dos seguintes comandos:
flutter build apk
flutter build appbundle
flutter build ios
flutter build linux
flutter build macos
flutter build windows
Usar este sinalizador ao construir o artefato de saída Flutter fornece um resumo do tamanho e da composição do artefato. Inclui código nativo, recursos e até mesmo uma divisão em nível de pacote do código Dart compilado.
Análise da Galeria Flutter do APK da versão de amostra
Este resumo é útil para analisar rapidamente o tamanho de uma compilação e entender por que é muito grande. Além disso, os dados coletados também estão disponíveis como um arquivo JSON que pode ser visualizado no Dart DevTools, o que permite examinar mais detalhadamente o conteúdo do seu aplicativo, identificar problemas de tamanho e ver as alterações entre dois arquivos JSON diferentes, seguindo as instruções em flutter.dev . Após fazer o upload do arquivo JSON, você terá uma interface que exibe um mapa de árvore do tamanho do seu aplicativo.
Um exemplo de detalhamento de APK na documentação do Dart DevTools
para a ferramenta de análise de tamanho do aplicativo em flutter.dev
Comentário
O que o Android Studio há muito tempo é capaz de fazer por conta própria agora pode ser analisado por meio das Ferramentas de Desenvolvimento. Isso é ainda mais flexível. Agora você pode implantar relatórios em Json diretamente no CI e monitorar as mudanças no tamanho do conjunto ao longo do tempo.
Visualização: página de rede atualizada em DevTools
Outro recurso preliminar do DevTools nesta versão: o corpo da solicitação agora é exibido na guia Rede .
Para habilitar esse recurso, certifique-se de estar no canal de desenvolvimento do Flutter via
flutter channel deve flutter channel upgrade.
Além disso, para aplicativos com grande volume de tráfego de rede, fornecemos a capacidade de pesquisar e filtrar.
Para obter a documentação sobre a guia Rede, consulte a seção Usando a tela de rede em flutter.dev .
Guia Hosted DevTools Inspector no IntelliJ
Já faz algum tempo que mantemos duas cópias de algumas de nossas ferramentas Flutter: por exemplo, o painel Inspetor no IntelliJ e a guia Inspetor no Dart DevTools. Isso retarda nosso trabalho: precisamos manter duas bases de código. Além disso, alguns recursos ainda não fazem parte do plug-in IntelliJ - por exemplo, Layout Explorer. Para resolver esses problemas, habilitamos a capacidade de hospedar a guia Inspetor do Dart DevTools diretamente no IntelliJ.
Para habilitar essa opção, vá para Preferências > Idiomas e estruturas > Flutter > Habilitar inspetor DevTools incorporado .
, . Flutter Dev Podcast Android Studio VS Code.
, … . , IDE. . , Android Studio. .
Visual Studio Code
Uma ação comum que todos os desenvolvedores do Flutter enfrentam é ir dos rastreamentos de pilha de erros no terminal para o local no código-fonte onde o erro ocorreu. Na versão mais recente da extensão Flutter para Visual Studio Code, esses links agora são analisados corretamente: você pode clicar neles e ir para o local desejado no código onde ocorreu a falha.
Parece uma coisa pequena, mas o feedback inicial sobre esse recurso já é muito positivo.
Como sempre, há muitos logs de mudanças de ferramentas aqui, mas eu recomendo verificar os seguintes anúncios:
- Dart DevTools - 0.9.0
- Dart DevTools - 0.9.1
- Dart DevTools - 0.9.3
- Lançamento do plug-in Flutter IntelliJ M48.1
- Lançamento do plug-in Flutter IntelliJ M49
- Lançamento do plug-in Flutter IntelliJ M50
- VS Code Extensions v3.14.0
- VS Code Extensions v3.15.0
Foco no cliente: EasyA
EasyA é um aplicativo baseado em assinatura onde os alunos se envolvem com tutores brilhantes por meio de mensagens instantâneas. O aplicativo foi escrito em Flutter. A Apple recentemente o sinalizou como o App do dia .
“Quando as escolas começaram a migrar para o ensino a distância, no início deste ano, tínhamos a tarefa de lançar rapidamente um aplicativo para ajudar os alunos. Graças à alta velocidade de desenvolvimento no Flutter, pudemos fazer um aplicativo para iOS e Android. E eles conseguiram publicá-los nas lojas - bem a tempo para o início do bloqueio! Em circunstâncias normais, isso seria praticamente impossível. Mas, como o Flutter nos permite trabalhar com as três plataformas ao mesmo tempo, fomos capazes de reutilizar o código com eficácia. Nossa pequena equipe de desenvolvimento trabalhou muito. "
Phil Kwok, cofundador da EasyA
Quebrando mudanças
Como sempre, tentamos manter o número de alterações importantes ao mínimo. Aqui está uma lista do Flutter 1.22:
- 56413 Impedir que viewport.showOnScreen role a janela de exibição se o Rect especificado já estiver exibido .
- 62395 [gen_l10n] Geração de pacote sintético padrão.
- 62588 Crie rotas ainda menos.
A versão estável do Flutter 1.22 pode ter saído muito rapidamente após o lançamento 1.20, mas há tantas coisas boas nela que não poderíamos mencionar tudo aqui. Esperamos que este lançamento ajude você a criar aplicativos iOS e Android incríveis, e mal podemos esperar para ver o que está chegando às lojas! Obrigado pelo seu apoio: estamos construindo o Flutter para você.