<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rodrigo Rahman</title>
    <description>The latest articles on DEV Community by Rodrigo Rahman (@rodrigorahman).</description>
    <link>https://dev.to/rodrigorahman</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F820617%2F0aa59cc5-4ef7-4018-9c2d-80576c3c4f8b.png</url>
      <title>DEV Community: Rodrigo Rahman</title>
      <link>https://dev.to/rodrigorahman</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rodrigorahman"/>
    <language>en</language>
    <item>
      <title>Flutter 3.41 + Pub Workspaces: por que a cobertura de testes quebrou (e o que fazer)</title>
      <dc:creator>Rodrigo Rahman</dc:creator>
      <pubDate>Sat, 14 Feb 2026 10:31:52 +0000</pubDate>
      <link>https://dev.to/rodrigorahman/flutter-341-pub-workspaces-por-que-a-cobertura-de-testes-quebrou-e-o-que-fazer-4enj</link>
      <guid>https://dev.to/rodrigorahman/flutter-341-pub-workspaces-por-que-a-cobertura-de-testes-quebrou-e-o-que-fazer-4enj</guid>
      <description>&lt;h2&gt;
  
  
  O que aconteceu
&lt;/h2&gt;

&lt;p&gt;Se você usa &lt;strong&gt;Pub Workspaces&lt;/strong&gt; (monorepo com &lt;code&gt;workspace:&lt;/code&gt; no root e &lt;code&gt;resolution: workspace&lt;/code&gt; nos packages), pode ter notado um comportamento bem chato ao rodar testes com &lt;strong&gt;cobertura&lt;/strong&gt;: o comando até executa, mas a cobertura sai &lt;strong&gt;zerada/vazia&lt;/strong&gt;. Em workspaces, o pub faz &lt;strong&gt;uma resolução única&lt;/strong&gt; (um &lt;code&gt;pubspec.lock&lt;/code&gt; e um &lt;code&gt;.dart_tool/package_config.json&lt;/code&gt; compartilhados na raiz), o que é ótimo para consistência… mas aumenta a chance de conflito quando alguma ferramenta/dep não está 100% alinhada com esse modo de resolução. ([Dart][1])&lt;/p&gt;

&lt;h2&gt;
  
  
  Sintoma típico
&lt;/h2&gt;

&lt;p&gt;No &lt;code&gt;package:test&lt;/code&gt;, o problema aparece como &lt;strong&gt;cobertura vazia&lt;/strong&gt;, mesmo com testes passando — por exemplo, um retorno no formato:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;{"type":"CodeCoverage","coverage":[]}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Isso foi reportado como bug do &lt;code&gt;test&lt;/code&gt; ao usar &lt;code&gt;resolution: workspace&lt;/code&gt;, com repro bem direto (monorepo + &lt;code&gt;dart test --coverage&lt;/code&gt;). ([GitHub][2])&lt;/p&gt;

&lt;h2&gt;
  
  
  Por que isso bateu forte no Flutter 3.41
&lt;/h2&gt;

&lt;p&gt;O ponto-chave é que o Flutter SDK tem &lt;strong&gt;pinned packages&lt;/strong&gt;: alguns pacotes são &lt;strong&gt;fixados&lt;/strong&gt; pelo SDK em versões específicas (incluindo dependências do &lt;code&gt;flutter_test&lt;/code&gt;). Se seu app (ou suas deps) dependem desses pacotes, seu grafo de dependência precisa aceitar exatamente as versões pinadas — senão você fica “preso” numa faixa de versões. ([GitHub][3])&lt;/p&gt;

&lt;p&gt;No caso desta treta, o Flutter 3.41 ficou travado em uma combinação que fazia o workspace cair numa versão do &lt;code&gt;test&lt;/code&gt; que &lt;strong&gt;ainda tinha&lt;/strong&gt; o bug de cobertura. A issue do Flutter descreve exatamente isso: o Flutter 3.41 “fica” no &lt;code&gt;test 1.28&lt;/code&gt; por causa do pin do &lt;code&gt;test_api&lt;/code&gt; dentro do &lt;code&gt;flutter_test&lt;/code&gt;, e o bug foi corrigido no &lt;code&gt;test 1.29.0&lt;/code&gt; — mas você não conseguia chegar nele por causa do pin. ([GitHub][4])&lt;/p&gt;

&lt;h2&gt;
  
  
  Como corrigir (o caminho recomendado)
&lt;/h2&gt;

&lt;p&gt;A correção prática é: &lt;strong&gt;atualize para o hotfix&lt;/strong&gt; que ajusta esse encaixe de versões. Na prática, a recomendação que circulou (e que resolve o cenário de workspaces + coverage) é estar no &lt;strong&gt;Flutter 3.41.1&lt;/strong&gt; (ou superior) e rodar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;flutter upgrade&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Esse hotfix atualiza as dependências do &lt;code&gt;flutter_test&lt;/code&gt; para voltar a permitir uma combinação compatível com o fluxo de cobertura em workspaces (incluindo o ajuste de compatibilidade do &lt;code&gt;test_api&lt;/code&gt;). ([Instagram][5])&lt;/p&gt;

&lt;h2&gt;
  
  
  Se você não pode atualizar agora (workaround)
&lt;/h2&gt;

&lt;p&gt;Se você está bloqueado (CI/produção/branch congelada), dá para &lt;strong&gt;resolver um package fora do workspace temporariamente&lt;/strong&gt;, só para rodar validações/testes/cobertura naquele pacote.&lt;/p&gt;

&lt;p&gt;A própria doc de workspaces sugere criar um &lt;code&gt;pubspec_overrides.yaml&lt;/code&gt; no package e &lt;strong&gt;resetar&lt;/strong&gt; o &lt;code&gt;resolution&lt;/code&gt; — assim ele faz uma resolução independente ao rodar &lt;code&gt;dart pub get&lt;/code&gt; dentro daquele diretório. ([Dart][1])&lt;/p&gt;

&lt;p&gt;Exemplo (dentro de &lt;code&gt;packages/seu_pacote/&lt;/code&gt;):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;crie &lt;code&gt;pubspec_overrides.yaml&lt;/code&gt; com:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;resolution:&lt;/code&gt; (em branco)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;rode &lt;code&gt;dart pub get&lt;/code&gt; dentro do package&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;rode seus testes/cobertura ali&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Próximo passo: evoluir no Flutter (e em IA aplicada)&lt;/p&gt;

&lt;p&gt;Se você curte esse tipo de conteúdo “mão na massa” (bug real, solução real, e impacto em CI/produção), aqui vão 3 caminhos pra acelerar seu nível:&lt;/p&gt;

&lt;p&gt;✅ 1) Academia do Flutter&lt;/p&gt;

&lt;p&gt;Formação completa do zero ao avançado, com projetos reais, arquitetura, testes, performance e publicação.&lt;br&gt;
Acesse: &lt;a href="https://novo.academiadoflutter.com.br/" rel="noopener noreferrer"&gt;https://novo.academiadoflutter.com.br/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✅ 2) Academia das IAs&lt;/p&gt;

&lt;p&gt;Pra aprender a usar IA no desenvolvimento do jeito certo: engenharia de contexto, workflows e produtividade real pra entregar features inteiras.&lt;br&gt;
Acesse: &lt;a href="https://academiadasias.com.br/" rel="noopener noreferrer"&gt;https://academiadasias.com.br/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✅ 3) Workshop Flutter Experience&lt;/p&gt;

&lt;p&gt;Evento 100% prático pra construir um app completo comigo, do começo ao fim, com foco em entrega.&lt;br&gt;
Acesse: &lt;a href="https://go.hotmart.com/N101339135N" rel="noopener noreferrer"&gt;https://go.hotmart.com/N101339135N&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;--&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://github.com/flutter/flutter/issues/182314
https://raw.githubusercontent.com/flutter/flutter/3.41.1/CHANGELOG.md
https://github.com/dart-lang/test/issues/2570
https://dart.dev/tools/pub/workspaces
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>flutter</category>
      <category>dart</category>
      <category>testing</category>
    </item>
    <item>
      <title>High Code vs Vibe Coding: O Desenvolvedor do Futuro Não Escolhe um Lado — Ele Domina os Dois</title>
      <dc:creator>Rodrigo Rahman</dc:creator>
      <pubDate>Sat, 31 Jan 2026 13:59:47 +0000</pubDate>
      <link>https://dev.to/rodrigorahman/high-code-vs-vibe-coding-o-desenvolvedor-do-futuro-nao-escolhe-um-lado-ele-domina-os-dois-2cb4</link>
      <guid>https://dev.to/rodrigorahman/high-code-vs-vibe-coding-o-desenvolvedor-do-futuro-nao-escolhe-um-lado-ele-domina-os-dois-2cb4</guid>
      <description>&lt;p&gt;A Inteligência Artificial mudou a forma como escrevemos software, mas também criou confusão sobre como deveríamos programar agora.&lt;/p&gt;

&lt;p&gt;De um lado, surgiu o Vibe Coding.&lt;br&gt;&lt;br&gt;
Do outro, o conceito tradicional de High Code.&lt;/p&gt;

&lt;p&gt;E no meio disso tudo está nascendo um novo tipo de profissional:&lt;br&gt;&lt;br&gt;
o &lt;strong&gt;High Coder da era da IA.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Este artigo é para esclarecer essas ideias e mostrar por que o melhor caminho não é escolher um lado, mas evoluir para um novo nível de engenharia.&lt;/p&gt;




&lt;h2&gt;
  
  
  O que é Vibe Coding
&lt;/h2&gt;

&lt;p&gt;Vibe coding é programar guiado pela intuição, usando IA como principal geradora de código.&lt;/p&gt;

&lt;p&gt;O fluxo geralmente é assim:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Você descreve o que quer em linguagem natural
&lt;/li&gt;
&lt;li&gt;A IA gera blocos de código
&lt;/li&gt;
&lt;li&gt;Você testa
&lt;/li&gt;
&lt;li&gt;Ajusta pedindo novas versões
&lt;/li&gt;
&lt;li&gt;Repete até funcionar
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ferramentas que impulsionaram esse estilo incluem ChatGPT, GitHub Copilot e Cursor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Características do Vibe Coding
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Pouco planejamento inicial
&lt;/li&gt;
&lt;li&gt;Arquitetura vai surgindo no meio do caminho
&lt;/li&gt;
&lt;li&gt;Decisões técnicas são tomadas conforme o código aparece
&lt;/li&gt;
&lt;li&gt;Foco extremo em velocidade e experimentação
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Onde o Vibe Coding é excelente
&lt;/h3&gt;

&lt;p&gt;Ele é ótimo para:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Protótipos rápidos
&lt;/li&gt;
&lt;li&gt;Testar ideias
&lt;/li&gt;
&lt;li&gt;Automação pessoal
&lt;/li&gt;
&lt;li&gt;MVPs
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O ganho de velocidade é enorme. Ideias saem do zero e viram algo funcional em minutos.&lt;/p&gt;

&lt;h3&gt;
  
  
  O problema do Vibe Coding
&lt;/h3&gt;

&lt;p&gt;Quando usado sem base técnica forte, o resultado costuma ser:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Código difícil de manter
&lt;/li&gt;
&lt;li&gt;Arquitetura inconsistente
&lt;/li&gt;
&lt;li&gt;Problemas de segurança ignorados
&lt;/li&gt;
&lt;li&gt;Performance só vira assunto quando já está ruim
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ou seja, é rápido para começar, mas caro para manter.&lt;/p&gt;




&lt;h2&gt;
  
  
  O que é High Code (definição clássica)
&lt;/h2&gt;

&lt;p&gt;High code surgiu como contraponto a low-code e no-code.&lt;/p&gt;

&lt;p&gt;É o desenvolvimento tradicional onde o programador:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Escreve o código manualmente
&lt;/li&gt;
&lt;li&gt;Define a arquitetura do sistema
&lt;/li&gt;
&lt;li&gt;Escolhe padrões e estruturas
&lt;/li&gt;
&lt;li&gt;Se preocupa com testes, performance e escalabilidade &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Aqui o foco não é apenas fazer funcionar, mas construir software que continua funcionando bem com o tempo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Um High Coder clássico é quem
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Entende arquitetura de software
&lt;/li&gt;
&lt;li&gt;Modela bem o domínio de negócio
&lt;/li&gt;
&lt;li&gt;Sabe trabalhar com backend, APIs e banco de dados
&lt;/li&gt;
&lt;li&gt;Se preocupa com manutenibilidade
&lt;/li&gt;
&lt;li&gt;Consegue debugar problemas complexos
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Esse profissional não depende de ferramentas mágicas.&lt;br&gt;&lt;br&gt;
Ele sabe o que está acontecendo por baixo do framework.&lt;/p&gt;




&lt;h2&gt;
  
  
  O encontro dos dois mundos: nasce o Novo High Code
&lt;/h2&gt;

&lt;p&gt;Com a IA, o cenário mudou.&lt;/p&gt;

&lt;p&gt;Hoje, o melhor desenvolvedor não é o que ignora IA.&lt;br&gt;&lt;br&gt;
Também não é o que deixa a IA decidir tudo.&lt;/p&gt;

&lt;p&gt;O destaque é o profissional que pensa como engenheiro experiente e executa com a velocidade da IA.&lt;/p&gt;

&lt;p&gt;Esse é o High Coder do mundo novo.&lt;/p&gt;




&lt;h2&gt;
  
  
  Como o High Coder moderno trabalha
&lt;/h2&gt;

&lt;p&gt;Ele não faz vibe coding descontrolado.&lt;br&gt;&lt;br&gt;
Mas também não programa como se a IA não existisse.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ele define arquitetura antes de sair gerando código
&lt;/li&gt;
&lt;li&gt;Quebra a feature em partes bem pensadas
&lt;/li&gt;
&lt;li&gt;Usa IA para acelerar a implementação
&lt;/li&gt;
&lt;li&gt;Revisa o que a IA produziu
&lt;/li&gt;
&lt;li&gt;Refatora quando necessário
&lt;/li&gt;
&lt;li&gt;Mantém testes, padrões e consistência
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A IA vira um acelerador de engenharia, não um substituto da engenharia.&lt;/p&gt;




&lt;h2&gt;
  
  
  Vibe Coder vs High Coder da Era da IA
&lt;/h2&gt;

&lt;p&gt;Vibe Coder  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Começa pedindo código
&lt;/li&gt;
&lt;li&gt;IA decide muita coisa
&lt;/li&gt;
&lt;li&gt;Foco em fazer funcionar
&lt;/li&gt;
&lt;li&gt;Refatora só quando dói
&lt;/li&gt;
&lt;li&gt;Pode virar caos rápido
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;High Coder do Mundo Novo  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Começa definindo arquitetura
&lt;/li&gt;
&lt;li&gt;IA executa decisões humanas
&lt;/li&gt;
&lt;li&gt;Foco em funcionar bem e por muito tempo
&lt;/li&gt;
&lt;li&gt;Refatora de forma consciente
&lt;/li&gt;
&lt;li&gt;Mantém estrutura, padrão e qualidade
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O novo high coder não é mais lento.&lt;br&gt;&lt;br&gt;
Ele é estratégico e acelerado pela IA.&lt;/p&gt;




&lt;h2&gt;
  
  
  O verdadeiro superpoder do desenvolvedor moderno
&lt;/h2&gt;

&lt;p&gt;No passado, ser forte tecnicamente já era diferencial.&lt;/p&gt;

&lt;p&gt;Hoje o diferencial é ter base sólida de engenharia, entender arquitetura e boas práticas, e saber usar IA para produzir muito mais rápido sem perder qualidade.&lt;/p&gt;

&lt;p&gt;Esse profissional usa IA para gerar código, mas revisa, adapta e melhora.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mantém padrões de projeto.
&lt;/li&gt;
&lt;li&gt;Constrói sistemas escaláveis.
&lt;/li&gt;
&lt;li&gt;Pensa no longo prazo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ele não programa na vibe.&lt;br&gt;&lt;br&gt;
Ele programa com intenção e com IA como aliada.&lt;/p&gt;




&lt;h2&gt;
  
  
  Como se tornar um High Coder do mundo da IA
&lt;/h2&gt;

&lt;p&gt;Aprender ferramenta é fácil.&lt;br&gt;&lt;br&gt;
Difícil é construir a base que permite usar IA com maturidade técnica.&lt;/p&gt;

&lt;p&gt;Se você quer sair do nível de só pedir código para a IA e chegar no nível de engenheiro que domina arquitetura e usa IA como copiloto, o caminho é fortalecer seus fundamentos de desenvolvimento de software.&lt;/p&gt;

&lt;p&gt;É exatamente essa mentalidade que você encontra na Academia do Flutter e a Academia das IAs.&lt;/p&gt;

&lt;p&gt;Lá você não aprende só a montar telas.&lt;br&gt;&lt;br&gt;
Você aprende a pensar arquitetura, organizar código de forma profissional, construir aplicações reais e evoluir para o nível de desenvolvedor e a Academia das IAs você aprende como usar a IA como amplificador, não como muleta.&lt;/p&gt;

&lt;p&gt;O mercado está mudando.&lt;/p&gt;

&lt;p&gt;A IA não está substituindo os bons desenvolvedores.&lt;br&gt;&lt;br&gt;
Ela está multiplicando o impacto de quem realmente sabe o que está fazendo.&lt;/p&gt;

&lt;p&gt;E esse é o verdadeiro significado de High Code no mundo novo.&lt;/p&gt;

</description>
      <category>highcode</category>
      <category>vibecoding</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>Flutter congelando? Aprenda como resolver!</title>
      <dc:creator>Rodrigo Rahman</dc:creator>
      <pubDate>Thu, 06 Mar 2025 18:13:46 +0000</pubDate>
      <link>https://dev.to/rodrigorahman/flutter-congelando-aprenda-como-resolver-213o</link>
      <guid>https://dev.to/rodrigorahman/flutter-congelando-aprenda-como-resolver-213o</guid>
      <description>&lt;p&gt;Um problema muito comum no Flutter é o &lt;strong&gt;travamento da interface&lt;/strong&gt;, afetando animações, CircularProgressIndicator e outras interações da UI.&lt;/p&gt;

&lt;p&gt;Isso acontece porque o Flutter executa todo o código na &lt;strong&gt;thread principal&lt;/strong&gt;, que antes da versão 3.29 era dividida em duas: uma para o Flutter e outra para o Dart.&lt;/p&gt;

&lt;p&gt;A arquitetura do Flutter utiliza um &lt;strong&gt;Event Loop&lt;/strong&gt;, um conceito amplamente utilizado e muito eficiente em tecnologias como Node.js, onde eventos são processados de forma sequencial na mesma thread.&lt;/p&gt;

&lt;p&gt;Porém, ao executar tarefas pesadas, como &lt;strong&gt;conversão de JSON, leitura de arquivos ou cálculos complexos&lt;/strong&gt;, podemos sobrecarregar essa única thread, resultando em travamentos perceptíveis.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔍 Como Identificar o Problema?
&lt;/h3&gt;

&lt;p&gt;Você pode notar esse problema quando um &lt;strong&gt;indicador de carregamento (Spinner ou CircularProgressIndicator)&lt;/strong&gt; congela abruptamente antes de exibir o conteúdo final. Veja o exemplo:&lt;/p&gt;

&lt;p&gt;📌 &lt;strong&gt;O CircularProgressIndicator estava rodando normalmente, mas de repente congela e só retorna quando a operação termina.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foxjp18fcrvwfexkqbtld.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foxjp18fcrvwfexkqbtld.gif" alt=" " width="308" height="702"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O que aconteceu? Veja o código abaixo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F773syxko24ovmpculs2z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F773syxko24ovmpculs2z.png" alt=" " width="800" height="624"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Parece um &lt;strong&gt;repositório&lt;/strong&gt; simples onde eu faço a busca das issues do github e depois um loop realizando uma regra de negócio específica e depois a junção e conversão da resposta em um modelo.&lt;/p&gt;

&lt;p&gt;E aí está o problema! O &lt;strong&gt;Event Loop&lt;/strong&gt; estava processando normalmente o CircularProgressIndicator, mas assim que recebeu um novo evento — a resposta do processo assíncrono — precisou interromper sua execução para processá-lo. Infelizmente, essa operação demorou mais do que o esperado, &lt;strong&gt;congelando a UI&lt;/strong&gt; até que fosse concluída.&lt;/p&gt;

&lt;p&gt;Neste exemplo, o travamento ficou evidente, mas você pode ter enfrentado esse problema em algum app sem nem perceber. Talvez um &lt;strong&gt;scroll engasgando&lt;/strong&gt;, uma &lt;strong&gt;animação travando&lt;/strong&gt;, ou uma tela que parece “presa” antes de carregar completamente.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tá bom Rahman mas qual a solução?🤔🔥&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Isolates no Flutter:
&lt;/h3&gt;

&lt;p&gt;Os &lt;strong&gt;Isolates&lt;/strong&gt; são a forma do Dart de lidar com execução paralela sem compartilhar memória. Diferente de threads tradicionais, cada Isolate possui seu próprio espaço de memória e se comunica com outros Isolates por meio de &lt;strong&gt;mensagens&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;No Flutter, o código da aplicação roda em um &lt;strong&gt;Isolate principal&lt;/strong&gt;, responsável pela UI. Se uma tarefa demorada for executada nesse Isolate, a interface pode travar. Para evitar isso, podemos criar &lt;strong&gt;Isolates secundários&lt;/strong&gt;, que processam tarefas pesadas sem impactar a fluidez da aplicação.&lt;/p&gt;

&lt;p&gt;Essa abordagem garante que operações complexas, como parsing de JSON, processamento de imagens ou cálculos matemáticos, ocorram em segundo plano, mantendo a experiência do usuário suave e responsiva. 🚀&lt;/p&gt;

&lt;h3&gt;
  
  
  A Solução:
&lt;/h3&gt;

&lt;p&gt;Isolates é a solução ideal porém você deve estar pensando, poxa vou precisar de toda a complexidade de um isolate somente pra isso?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fit9cb5d3yrooho0ng8nr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fit9cb5d3yrooho0ng8nr.png" alt=" " width="785" height="358"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h4&gt;
  
  
  E a resposta é NÃO!
&lt;/h4&gt;

&lt;p&gt;A Partir do Dart 3 a google adicionou um novo recurso para simplificar o Isolate e ele seria o Isolate.run&lt;/p&gt;

&lt;h3&gt;
  
  
  O que é Isolate.run?
&lt;/h3&gt;

&lt;p&gt;O Isolate.run é uma forma &lt;strong&gt;simplificada&lt;/strong&gt; de executar código em um Isolate sem precisar gerenciar manualmente &lt;strong&gt;SendPort&lt;/strong&gt; e &lt;strong&gt;ReceivePort&lt;/strong&gt;. Ele abstrai a criação do Isolate, permitindo rodar tarefas pesadas de forma assíncrona.&lt;/p&gt;

&lt;p&gt;Pronto aí está a solução veja como ficou o nosso repository agora:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7t63fe4yvkrc056viuyr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7t63fe4yvkrc056viuyr.png" alt=" " width="800" height="705"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Primeiro identificamos que o problema estava no nosso loop e na conversão correto? Sendo assim envolvemos esse código em um Isolate.run abrindo uma nova thread para executar esse processo porém aguardando a execução e o retorno corretamente.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fowf7kjm2lkgdvm8x6rav.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fowf7kjm2lkgdvm8x6rav.png" alt=" " width="800" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E agora veja o resultado:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzemg622xzdhonl36se4d.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzemg622xzdhonl36se4d.gif" alt=" " width="198" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Uma interface fluida e sem travamento ;-)&lt;/p&gt;

&lt;p&gt;Veja o vídeo completo dessa implementação no meu canal do youtube:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/F83BeAgbUTA" rel="noopener noreferrer"&gt;Flutter travando com JSON? Aprenda a usar Isolates para melhorar a performance!&lt;/a&gt;&lt;br&gt;
&lt;a href="https://youtu.be/F83BeAgbUTA" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5szvcxy28troltm15tsp.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>mobile</category>
    </item>
    <item>
      <title>Descobrindo a Sobrescrita de Métodos no VS Code: Um Guia para Aumentar sua Produtividade</title>
      <dc:creator>Rodrigo Rahman</dc:creator>
      <pubDate>Wed, 05 Mar 2025 11:01:34 +0000</pubDate>
      <link>https://dev.to/rodrigorahman/descobrindo-a-sobrescrita-de-metodos-no-vs-code-um-guia-para-aumentar-sua-produtividade-1ao9</link>
      <guid>https://dev.to/rodrigorahman/descobrindo-a-sobrescrita-de-metodos-no-vs-code-um-guia-para-aumentar-sua-produtividade-1ao9</guid>
      <description>&lt;p&gt;Para aqueles que, assim como eu, vieram de outras linguagens de programação e se encontraram no mundo do Flutter utilizando o VS Code como editor principal, a adaptação pode ter apresentado alguns desafios. &lt;/p&gt;

&lt;p&gt;Confesso que, vindo do Java e acostumado com a praticidade do IntelliJ, senti falta de algumas funcionalidades básicas ao migrar para o Flutter. &lt;/p&gt;

&lt;p&gt;Uma delas era a dificuldade em sobrescrever métodos herdados e visualizar a lista de métodos disponíveis para sobrescrita. &lt;/p&gt;

&lt;p&gt;Por um bom tempo, realizei essa tarefa manualmente, abrindo arquivos, copiando métodos ou contando com a sorte de o VS Code identificar minha intenção&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx7gdysof42kh3zfrt9e2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx7gdysof42kh3zfrt9e2.png" alt=" " width="800" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Após seis anos de uso contínuo do VS Code, e já conformado com a ideia de que ele não se igualaria a uma IDE completa, descobri por acaso a maneira correta de realizar a sobrescrita de métodos de forma eficiente.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O Segredo da Sobrescrita Eficiente&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Para visualizar a lista de métodos que podem ser sobrescritos, basta digitar &lt;code&gt;@override&lt;/code&gt; no VS Code. Instantaneamente, a IDE exibirá todos os métodos disponíveis para sobrescrita.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1umv04bir3pq7w5udffu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1umv04bir3pq7w5udffu.png" alt=" " width="800" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Surpreendentemente simples, não é mesmo?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Com apenas esse comando, você terá o poder de sobrescrever métodos de forma rápida e eficiente, otimizando seu fluxo de trabalho e aumentando sua produtividade no desenvolvimento com Flutter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vídeo Explicativo:
&lt;/h2&gt;

&lt;p&gt;Para ver essa dica em ação e acompanhar o passo a passo, confira o vídeo completo no meu canal: &lt;a href="https://youtu.be/BEj_GFK5gdA" rel="noopener noreferrer"&gt;Sobrescrita de Método Nunca Foi Tão Fácil! | 🚀 Aumente sua Produtividade no VS Code&lt;/a&gt;. Lá, mostro na prática como essa técnica simples pode transformar sua forma de trabalhar no VS Code e impulsionar sua produtividade.&lt;/p&gt;

&lt;p&gt;Espero que essa dica seja útil! Compartilhe suas experiências e dúvidas nos comentários.&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>vscode</category>
      <category>dart</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
