Simple self-tracking app built with Flutter

Built a simple self-tracking app with Flutter; you can find the source code (and app store links) at https://github.com/zenobase/zenobase-durations.

Background

I had looked into Cordova a few years ago, but it ended up not being worth the trouble compared to just writing a progressive web app. Also looked at React Native early last year, but felt like I wouldn't get where I needed to without writing native code, which was too much trouble.

When I came across Flutter, almost everything I could think of seemed to have been taken care of, and I felt I could get a simple app done without spending weeks creating custom build scripts, figuring out how to test my code, manage dependencies etc.

Notes - Settled on using the redux pattern for state management, using ReduRx. Having used event sourcing on backend projects, this approach felt quite natural. - Data is stored locally using sembast. While data is only read on startup, changes are appended after every state change (via a "middleware" component). - Cloudmagic made setting up CI builds (incl iOS) about as quick and easy as can be. - Started out using IntelliJ IDEA (since I had that set up already) plus Flutter and related plugins, but switched to Android Studio when I realized IDEA was still missing functionality. - Dart is quite nice (though I'd still rather be using Kotlin), see this discussion. - Localization seemed overly complicated (plus there's more than one way to do it)... - Not really a Flutter issue, but figuring out the Google Play and App Store rules and workflows, plus collecting screenshots and descriptions for the store listings for multiple languages and devices turned out to be a bit more tedious than expected.

Simple self-tracking app built with Flutter

3 comments · 100% upvoted · other discussions

comments

the_bluescreen

First time I heard ReduRx. It looks pretty simple! What do you think about that if you compare it with other state managements? The only thing I worried about flutter is state management. It's still not clear for me tbh.

ercjn [OP]

Didn't do a comprehensive review of state management solutions. Once I realized that things were going to get ugly with setState, I read about some alternatives, and the redux pattern made most sense to me. ReduRx seemed to require a bit less boilerplate code than some of the other implementations (and doesn't require code generation). Might have to replace it eventually as it's no longer maintained, but it works for now.