<?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: Victor Lopes</title>
    <description>The latest articles on DEV Community by Victor Lopes (@vlopess).</description>
    <link>https://dev.to/vlopess</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%2F3003092%2F24c17a2b-fc8b-4b30-9a27-f0814aaa7ee5.jpeg</url>
      <title>DEV Community: Victor Lopes</title>
      <link>https://dev.to/vlopess</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vlopess"/>
    <language>en</language>
    <item>
      <title>JUnit Architectural Analysis</title>
      <dc:creator>Victor Lopes</dc:creator>
      <pubDate>Mon, 07 Jul 2025 09:19:17 +0000</pubDate>
      <link>https://dev.to/vlopess/junit-architectural-analysis-me8</link>
      <guid>https://dev.to/vlopess/junit-architectural-analysis-me8</guid>
      <description>&lt;p&gt;JUnit 5 uses a microkernel architecture. The platform does not execute tests. Instead, it defines an SPI and delegates execution to TestEngines, each responsible for discovering and running its own type of tests.&lt;/p&gt;

&lt;p&gt;In my article, I explain how this architecture works underneath, from loading the engines to execution via the execution tree.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/@Victorldev/architectural-analysis-of-junit-d9472f9bf79b" rel="noopener noreferrer"&gt;https://medium.com/@Victorldev/architectural-analysis-of-junit-d9472f9bf79b&lt;/a&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>architecture</category>
      <category>test</category>
      <category>programming</category>
    </item>
    <item>
      <title>Automating Flutter Apps: An Introduction to CI/CD Pipelines</title>
      <dc:creator>Victor Lopes</dc:creator>
      <pubDate>Fri, 30 May 2025 09:03:12 +0000</pubDate>
      <link>https://dev.to/vlopess/automating-flutter-apps-an-introduction-to-cicd-pipelines-59mn</link>
      <guid>https://dev.to/vlopess/automating-flutter-apps-an-introduction-to-cicd-pipelines-59mn</guid>
      <description>&lt;p&gt;The more manual your development process is, the higher the risk of errors, delays, and broken releases.&lt;/p&gt;

&lt;p&gt;That’s where CI/CD pipelines come in. They automate the entire workflow:&lt;br&gt;
🔧 Testing&lt;br&gt;
✅ Validation&lt;br&gt;
📦 Build&lt;br&gt;
🚀 Deployment&lt;/p&gt;

&lt;p&gt;The result?&lt;br&gt;
✔️ Fewer errors&lt;br&gt;
✔️ Faster delivery&lt;br&gt;
✔️ Code always ready for production&lt;/p&gt;

&lt;p&gt;In this article, I explain — in a simple way — how a CI/CD pipeline works and why it’s a must-have in modern software development.&lt;/p&gt;

&lt;p&gt;👉 Read the full article here: &lt;a href="https://medium.com/@Victorldev/automating-flutter-apps-an-introduction-to-ci-cd-pipelines-197919d0e886" rel="noopener noreferrer"&gt;https://medium.com/@Victorldev/automating-flutter-apps-an-introduction-to-ci-cd-pipelines-197919d0e886&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cicd</category>
      <category>flutter</category>
      <category>ci</category>
      <category>githubactions</category>
    </item>
    <item>
      <title>The basics you need to know about widget lifecycle</title>
      <dc:creator>Victor Lopes</dc:creator>
      <pubDate>Fri, 23 May 2025 09:29:37 +0000</pubDate>
      <link>https://dev.to/vlopess/the-basics-you-need-to-know-about-widget-lifecycle-1h8f</link>
      <guid>https://dev.to/vlopess/the-basics-you-need-to-know-about-widget-lifecycle-1h8f</guid>
      <description>&lt;p&gt;🚀 Mastering Flutter Widget Lifecycle&lt;/p&gt;

&lt;p&gt;As Flutter developer, understanding widget lifecycle is crucial for building high-performance, memory-efficient applications.&lt;/p&gt;

&lt;p&gt;Key Lifecycle Methods&lt;/p&gt;

&lt;p&gt;✅ initState() - Initialize controllers, subscriptions (called once)&lt;br&gt;
✅ didChangeDependencies() - React to inherited widget changes&lt;br&gt;
✅ didUpdateWidget() - Optimize rebuilds by comparing old/new props&lt;br&gt;
✅ dispose() - Critical for preventing memory leaks (always free resources!)&lt;/p&gt;

&lt;p&gt;In my last article, I explain in a simple and practical way when each one is called and how to use them correctly.&lt;/p&gt;

&lt;p&gt;👉 Read the full article here: &lt;a href="https://medium.com/@Victorldev/manipulating-lifecycle-of-stateful-widgets-in-flutter-e894a83d7bf0" rel="noopener noreferrer"&gt;https://medium.com/@Victorldev/manipulating-lifecycle-of-stateful-widgets-in-flutter-e894a83d7bf0&lt;/a&gt;&lt;/p&gt;

</description>
      <category>dart</category>
      <category>flutter</category>
      <category>mobile</category>
      <category>stateful</category>
    </item>
    <item>
      <title>Asynchronous builders in Flutter: Analyzing FutureBuilder and StreamBuilder</title>
      <dc:creator>Victor Lopes</dc:creator>
      <pubDate>Fri, 16 May 2025 10:49:22 +0000</pubDate>
      <link>https://dev.to/vlopess/asynchronous-builders-in-flutter-analyzing-futurebuilder-and-streambuilder-2hko</link>
      <guid>https://dev.to/vlopess/asynchronous-builders-in-flutter-analyzing-futurebuilder-and-streambuilder-2hko</guid>
      <description>&lt;p&gt;I just published an article on how to use &lt;code&gt;FutureBuilder&lt;/code&gt; and &lt;code&gt;StreamBuilder&lt;/code&gt; in Flutter to simplify asynchronous operations. These builders eliminate repetitive code and make your UI more responsive, without complications.&lt;/p&gt;

&lt;p&gt;If you're tired of managing &lt;code&gt;setState&lt;/code&gt; manually or dealing with nested callbacks, it's worth checking out.&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Read here:&lt;/strong&gt; &lt;a href="https://medium.com/@Victorldev/asynchronous-builders-in-flutter-analyzing-futurebuilder-and-streambuilder-d3f8af3af88a" rel="noopener noreferrer"&gt;https://medium.com/@Victorldev/asynchronous-builders-in-flutter-analyzing-futurebuilder-and-streambuilder-d3f8af3af88a&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>mobile</category>
      <category>builder</category>
    </item>
    <item>
      <title>Understanding Future and Stream in Dart</title>
      <dc:creator>Victor Lopes</dc:creator>
      <pubDate>Sat, 10 May 2025 01:37:45 +0000</pubDate>
      <link>https://dev.to/vlopess/understanding-future-and-stream-in-dart-1246</link>
      <guid>https://dev.to/vlopess/understanding-future-and-stream-in-dart-1246</guid>
      <description>&lt;p&gt;Do you know the difference between &lt;code&gt;Future&lt;/code&gt; and &lt;code&gt;Stream&lt;/code&gt; in Dart?&lt;/p&gt;

&lt;p&gt;Both handle asynchronous operations, but have different purposes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Future&lt;/code&gt;: returns a single value in the future.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Stream&lt;/code&gt;: returns a sequence of values ​​over time.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this article, I show practical examples of each and explain when to use one or the other in your Flutter app or Dart project.&lt;/p&gt;

&lt;p&gt;📚 Read here: &lt;a href="https://medium.com/@Victorldev/understanding-future-and-stream-in-dart-cba0842a8470" rel="noopener noreferrer"&gt;https://medium.com/@Victorldev/understanding-future-and-stream-in-dart-cba0842a8470&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  dart #flutter #async #stream #future
&lt;/h1&gt;

</description>
      <category>dart</category>
      <category>async</category>
      <category>stream</category>
      <category>future</category>
    </item>
    <item>
      <title>Create dynamic interfaces with SDUI (Server-Driven UI) in Flutter 🚀</title>
      <dc:creator>Victor Lopes</dc:creator>
      <pubDate>Fri, 02 May 2025 10:44:03 +0000</pubDate>
      <link>https://dev.to/vlopess/create-dynamic-interfaces-with-sdui-server-driven-ui-in-flutter-35jm</link>
      <guid>https://dev.to/vlopess/create-dynamic-interfaces-with-sdui-server-driven-ui-in-flutter-35jm</guid>
      <description>&lt;p&gt;In this article, I explain how to adopt SDUI in practice, controlling your UI directly from the backend.&lt;/p&gt;

&lt;p&gt;✅ JSON-based rendering&lt;br&gt;
✅ A/B testing with variants&lt;br&gt;
✅ Simple parser in Flutter&lt;/p&gt;

&lt;p&gt;Ideal for those who want to scale their app and gain deployment flexibility!&lt;/p&gt;

&lt;p&gt;👉 Read the full article: &lt;a href="https://medium.com/@Victorldev/dynamic-interfaces-with-server-driven-ui-for-mobile-bf934b8b3c4f" rel="noopener noreferrer"&gt;https://medium.com/@Victorldev/dynamic-interfaces-with-server-driven-ui-for-mobile-bf934b8b3c4f&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mobile</category>
      <category>programming</category>
      <category>architecture</category>
      <category>sdui</category>
    </item>
    <item>
      <title>Inversion of Control (IoC) Principle</title>
      <dc:creator>Victor Lopes</dc:creator>
      <pubDate>Sat, 26 Apr 2025 01:26:56 +0000</pubDate>
      <link>https://dev.to/vlopess/inversion-of-control-ioc-principle-kf6</link>
      <guid>https://dev.to/vlopess/inversion-of-control-ioc-principle-kf6</guid>
      <description>&lt;p&gt;I was recently asked this question, and since I have little knowledge about it, I decided to study and write an article talking about the fundamental difference between them, which is Inversion of Control. I recommend it, I tried to be brief.&lt;/p&gt;

&lt;p&gt;🔗 link: &lt;a href="https://medium.com/@Victorldev/inversion-of-control-ioc-principle-a8b8a79e1e01" rel="noopener noreferrer"&gt;https://medium.com/@Victorldev/inversion-of-control-ioc-principle-a8b8a79e1e01&lt;/a&gt;&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>programming</category>
      <category>framework</category>
    </item>
    <item>
      <title>Understanding keyword Yield in Dart + Examples in other languages</title>
      <dc:creator>Victor Lopes</dc:creator>
      <pubDate>Fri, 18 Apr 2025 22:06:13 +0000</pubDate>
      <link>https://dev.to/vlopess/understanding-keyword-yield-in-dart-examples-in-other-languages-4410</link>
      <guid>https://dev.to/vlopess/understanding-keyword-yield-in-dart-examples-in-other-languages-4410</guid>
      <description>&lt;h1&gt;
  
  
  Understanding &lt;code&gt;yield&lt;/code&gt; across languages (with examples)
&lt;/h1&gt;

&lt;p&gt;The &lt;code&gt;yield&lt;/code&gt; keyword might look simple — but it hides a lot of power.&lt;br&gt;&lt;br&gt;
In my latest article, I explain how &lt;code&gt;yield&lt;/code&gt; works to create &lt;strong&gt;generators&lt;/strong&gt;, which let you produce values lazily and pause/resume function execution.&lt;/p&gt;

&lt;p&gt;Even better: I show how &lt;code&gt;yield&lt;/code&gt; behaves across multiple languages, with real code examples in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dart&lt;/li&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;C#&lt;/li&gt;
&lt;li&gt;Java (yes — Java has a &lt;code&gt;yield&lt;/code&gt; too, in switch expressions)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you're new to &lt;code&gt;yield&lt;/code&gt; or just want to see how different languages implement the concept, this article is for you.&lt;/p&gt;

&lt;p&gt;📖 Read it here: &lt;a href="https://medium.com/@Victorldev/understanding-keyword-yield-in-dart-examples-in-other-languages-ae0feef81ccf" rel="noopener noreferrer"&gt;https://medium.com/@Victorldev/understanding-keyword-yield-in-dart-examples-in-other-languages-ae0feef81ccf&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>dart</category>
      <category>generators</category>
      <category>yield</category>
    </item>
    <item>
      <title>The Factory Constructor in Dart and Flutter</title>
      <dc:creator>Victor Lopes</dc:creator>
      <pubDate>Fri, 11 Apr 2025 09:33:25 +0000</pubDate>
      <link>https://dev.to/vlopess/the-factory-constructor-in-dart-and-flutter-5826</link>
      <guid>https://dev.to/vlopess/the-factory-constructor-in-dart-and-flutter-5826</guid>
      <description>&lt;p&gt;Have you ever seen the &lt;code&gt;factory&lt;/code&gt; keyword in Dart and wondered why or when to use it?&lt;/p&gt;

&lt;p&gt;In my article I talk about this.&lt;/p&gt;

&lt;p&gt;📖 Read the full post here 👉 &lt;a href="https://medium.com/@Victorldev/the-factory-constructor-in-dart-and-flutter-8adb8150ba4b" rel="noopener noreferrer"&gt;https://medium.com/@Victorldev/the-factory-constructor-in-dart-and-flutter-8adb8150ba4b&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>flutter</category>
      <category>dart</category>
      <category>designpatterns</category>
    </item>
    <item>
      <title>Native State Management in Flutter</title>
      <dc:creator>Victor Lopes</dc:creator>
      <pubDate>Fri, 04 Apr 2025 09:35:51 +0000</pubDate>
      <link>https://dev.to/vlopess/native-state-management-in-flutter-8h3</link>
      <guid>https://dev.to/vlopess/native-state-management-in-flutter-8h3</guid>
      <description>&lt;p&gt;🚀 Flutter State Management: ValueNotifier &amp;amp; ChangeNotifier&lt;/p&gt;

&lt;p&gt;If you're just starting out with Flutter or want a lightweight solution for managing state, ValueNotifier and ChangeNotifier are great options!&lt;/p&gt;

&lt;p&gt;In my new article, I explain these concepts in a simple and practical way, with examples that you can apply directly to your code.&lt;/p&gt;

&lt;p&gt;💡What will you learn?&lt;br&gt;
✅ How ValueNotifier Works and When to Use It&lt;br&gt;
✅ How ChangeNotifierWorks and When to Use It&lt;br&gt;
✅ Practical examples, from basic to advanced&lt;/p&gt;

&lt;p&gt;📖 Read the article here 👉 &lt;a href="https://medium.com/@Victorldev/native-state-management-in-flutter-b44ca610f0df" rel="noopener noreferrer"&gt;https://medium.com/@Victorldev/native-state-management-in-flutter-b44ca610f0df&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>mobile</category>
    </item>
  </channel>
</rss>
