---
title: "Gidudu Nicholas (@nicowalter) | Hashnode"
description: "Software Engineer. Read the latest articles by Gidudu Nicholas on Hashnode."
url: "https://hashnode.com/@nicowalter"
---

@nicowalter

# Gidudu Nicholas

@nicowalter · Kampala, UG · Joined March 2020

Software Engineer

[Website](https://gidudunicholas.dev/)

### [How to Test Flutter Apps: Unit, Widget, Golden, and Integration Tests Explained](https://freecodecamp.org/news/how-to-test-flutter-apps-unit-widget-golden-and-integration-tests-explained?utm_source=hashnode&utm_medium=feed)

The first time I was asked "what's your test coverage?" in a technical interview, I didn't have a good answer. I had shipped a couple of real Flutter apps by then. They worked and users were using the

28 min read · [freecodecamp.org](https://freecodecamp.org/news/how-to-test-flutter-apps-unit-widget-golden-and-integration-tests-explained?utm_source=hashnode&utm_medium=feed)

[Aug 27](https://hashnode.com/posts/how-to-test-flutter-apps-unit-widget-golden-and-integration-tests-explained/6a9058fc56e6415ec14cba57)

### [How to Fix App Jank: A Practical Guide to Profiling Flutter Apps with DevTools](https://freecodecamp.org/news/how-to-fix-app-jank-profiling-flutter-apps-with-devtools?utm_source=hashnode&utm_medium=feed)

Flutter makes it fast to build beautiful UIs. That speed is one of the framework's greatest strengths, but it also creates a subtle problem: performance issues are easy to introduce and difficult to f

15 min read · [freecodecamp.org](https://freecodecamp.org/news/how-to-fix-app-jank-profiling-flutter-apps-with-devtools?utm_source=hashnode&utm_medium=feed)

[Jul 8](https://hashnode.com/posts/how-to-fix-app-jank-profiling-flutter-apps-with-devtools/6a4e7117b685410081a33577)

### [Advanced Dart: Learn Asynchronous Programming with Streams, Isolates, and the Event Loop](https://freecodecamp.org/news/advanced-dart-learn-async-programming-with-streams-isolates-event-loop?utm_source=hashnode&utm_medium=feed)

I had been writing Flutter apps for over a year before I actually understood how Dart handles concurrency. I knew how to use await. I knew FutureBuilder and StreamBuilder well enough to get things wor

21 min read · [freecodecamp.org](https://freecodecamp.org/news/advanced-dart-learn-async-programming-with-streams-isolates-event-loop?utm_source=hashnode&utm_medium=feed)

[Jun 25](https://hashnode.com/posts/advanced-dart-learn-async-programming-with-streams-isolates-event-loop/6a3daf77210c3204fe177441)

### [How Flutter Renders Under the Hood: BuildContext and Element Tree Explained](https://freecodecamp.org/news/how-flutter-renders-under-the-hood-buildcontext-and-element-tree-explained?utm_source=hashnode&utm_medium=feed)

The first time I saw "Looking up a deactivated widget's ancestor is unsafe" in a stack trace, I genuinely didn't know what it meant. I copied the error into Google, found three different Stack Overflo

30 min read · [freecodecamp.org](https://freecodecamp.org/news/how-flutter-renders-under-the-hood-buildcontext-and-element-tree-explained?utm_source=hashnode&utm_medium=feed)

[Jun 23](https://hashnode.com/posts/how-flutter-renders-under-the-hood-buildcontext-and-element-tree-explained/6a3aaaa1e2b119a77f6a3a71)

### [How to Handle Errors the Right Way in Flutter: A Practical Guide to Sealed Classes, Records, and Result Types](https://freecodecamp.org/news/how-to-handle-errors-the-right-way-in-flutter-a-practical-guide-to-sealed-classes-records-and-result-types?utm_source=hashnode&utm_medium=feed)

I used to think I was handling errors well in my Flutter apps. I had try/catch blocks everywhere. I was catching exceptions, logging them, and showing error messages to users. It felt solid. Then I st

17 min read · [freecodecamp.org](https://freecodecamp.org/news/how-to-handle-errors-the-right-way-in-flutter-a-practical-guide-to-sealed-classes-records-and-result-types?utm_source=hashnode&utm_medium=feed)

[Jun 20](https://hashnode.com/posts/how-to-handle-errors-the-right-way-in-flutter-a-practical-guide-to-sealed-classes-records-and-result-types/6a36e90fd5185a258a6a5508)
