Hello! I am a U.S./Canadian dual citizen living in beautiful Halifax, Nova Scotia. When not coding with Flutter and Dart, you might find me running the trails of Nova Scotia or applying systems theory better understand the mind. Feel free to reach out to me to discuss Flutter, psychology, or anything else that is on your mind!

I recently published a few of my Flutter libraries. Below is a list of those available on Pub.dev.

StatefulWidgets are great. They render UI and hold mutable state. They do it all. Only, StatefulWidgets are not great at separating UI from state.

That’s where MVVM+ comes in.

MVVM+ implements the model-view-view model pattern by adding a pinch of syntactic sugar to StatefulWidget to separate its mutable states into a ViewModel class and its UI into a View class.

For more information on MVVM+, check out its documentation on Github. It’s not necessary to know the underpinnings of how MVVM+ works, but if you like to wade in the weeds, check out my Medium article, How to Extend a StatefulWidget into an MVVM Workhorse.

InheritedWidgets scope data on the widget tree (like Provider, ScopedModel). To access models on different branches, you can instead add your model to a global registry (like GetIt).

Wouldn’t it be nice to have a single library that organizes both inherited models and single services? That’s the idea behind Bilocator.

You add Bilocator widgets to your widget tree that manage your single services and your inherited models . For times when you need inherited models briefly be globally available (e.g., you want to fire up an editor on a different branch), you simply register your inherited model and unregister it when you’re done.

For more information on Bilocator, check out its documentation on Github.

Let’s face it. Writing widget tests can be tedious. That’s where GenExpects comes to the rescue.

GenExpects generates expect statements for all your widgets in test app’s widget tree. You can even generate expects after a gesture to test for changes.

For more information on GenExpects, see its documentation on Github.

I had a love/hate relationship with keys. I love their functionality and the problems they solve, but I am not a fan of manually maintaining key classes and files.

So, I took the “manual” part out and wrote a code generator for automatically writing key files. I will be sharing this library shorty with the Flutter community. Stay tuned! 🙂