My first 3 weeks with Flutter — a summary from a non mobile developer

Marc Logemann
SaaS Startup Factory
7 min readSep 25, 2019

But before i will dive into Flutter and Dart, some words about my background so that you understand where i am coming from or better, where i am NOT coming from. First of all, i am not a mobile developer. Never have been. For the most part of my professional life, i was a fullstack developer in the Java space and a bit on the desktop too (yikes! Yeah i know. Back in the days….). And along the way i touched many things, mainly to see how they work.

But why i am telling you that? When people talk about their experience with a new language or framework, their feelings really originate from their past experiences.

The language behind the framework. As a long time java developer (yeah i am old) i know of course one of the creators of Dart, Gilad Bracha. He worked for Sun on Java back then and perhaps its a coincidence but Dart somehow feels like a bit of Java and a bit of Javascript. If you know any of them, you should be fine and pick up Dart syntax in a couple of days. Perhaps its even easier for the (real ;-)) javasript folks, because async/await is already there as well as iterator constructs like .map(). So what do i really like about dart?

I like….

  • powerful constructors (named parameters, initializers,…)
  • async/await and Futures
  • single Inheritance and Mixins
  • not as strictly typed as java
  • expressive enough so reading is a no brainer

Overall it feels like a modern Java, somewhere in the middle of ECMAScript and Java. My guess is that when people start working with Flutter, Dart wont be the deal breaker. Its mainstream enough to dont scare people away. I bet it would be different if Google would have chosen Rust for example.

So why did i decide on going with Flutter for my next project? First, i wanted to code with a framework that essentially compiles to both mainstream mobile operating systems. Second i wanted kind of native speed on the device and last i wanted a mainstream player behind the project. As i told you before, i am old and have seen enough projects dying partly because of lack of company backing.

This is the point of time in the article why people will most likely ask: But why not React Native? Long story short. I tried React (without native) some time ago and i liked the overall concept. But what i didnt like was the tooling behind it. You need to know so much stuff in order to get on speed and even if you master the tooling, you still have the option which language to use. I just say “typescript declaration file for node libraries” as a placeholder for said issues far away from doing real work.

TL;DR: Flutter compared to the React ecosystem looks more compact, more approachable to me.

But i really don’t want to write a comparison. Others have done that here better than i could ever do it.

Right now it looks like everything is perfect and mobile development is just a piece of cake with flutter?

No it isnt but its not mainly Flutter’s fault.

As i said, i am not from the mobile development area. So the first thing which annoys me is that you still need to know tons of Xcode stuff. Its like this big black machinery which you don’t want to touch (“just compile it for me and go out of my way”) but unfortunately there are times where you need to open this freaking monster and at least know a little bit about project settings. One word also about compile times for Xcode -> horrible. Luckily you don’t compile that often thanks to hot-reload. Android seems a bit better because there is no other IDE involved but still you need to know something about those environment files if you want to get somewhere.

In a dream world, you would simply have SDKs for the various platforms and run the compilers from your main Flutter IDE of choice. Furthermore you would have Flutter-own descriptor files for everything (splashscreens, store images and whatnot) and let Flutter generate the platform specific boilerplate for you. I think its far away from being perfect at this point but it looks they are at it. If you look at GeneratedPluginRegistrant.java, you see generated Android code based on the plugins you have defined in your flutter package file. We definitely need more of this auto-configuration on both platforms based on your real flutter project specs.

Hey, but how do you like coding in Flutter?

Things i like about Flutter in general. I will go into the details after the much needed bulleted list.

  • a lot of 3rd party libs for a “new” framework
  • a pretty nice package manager
  • documentation is really solid and lots of Google video tutorials
  • boilerplate project generator like create-react-app
  • extensive MaterialDesign widget library
  • easy integration into Google‘s (really good) cloud services

I really like how much 3rd party libs already exist in https://pub.dev/flutter and even better, its one-stop not only for getting the packages but also for getting documentation about the libraries and links to github and so on. If you ever worked on a java project you know how bad its there. There is no such thing as a central web Repository together with things like documentation and examples.

One of the most, if not the most, important things for a framework to succeed is documentation. In the first days and weeks you code approx. 10–15% of your time. The rest is reading and learning. The Flutter team really puts a lot of energy into this.

You are pretty fast if you start with a database driven app for example. You will have all widgets which you will need inside the SDK and furthermore Google makes it easy to connect with their cloud offerings like Firebase, which has most things you will need for mobile development. Coming from an Amazon AWS background, i really can assure you that Google can play the game too. In fact some services are even better in my opinion. Compare Cognito to Firebase-Auth and you know what i mean. But this is a total different topic.

So what i ve done in 3 weeks?

Apart from reading tons of documentations, blogs and udemy videos? I created login and register flows (and screens of course) together with Social Logins. I added some CRUD screens with nice swipe-to-action effects on the data listings and did a kick-ass splash screen Animation with Flare where 2Dimensions has a nice Flutter plugin for. Not too bad for knowing almost nothing 3 weeks before. My experiences with mobile were something like 7 years in the past with a super small project with PhoneGap. Its a miracle that i ever wanted to touch mobile again after using PhoneGap.

What are the tough parts in Flutter?

There are some for sure and unfortunately its somehow partly the same as with React. You wont get much help structuring your application. And you are on your own to decide how to do state management. There is a state-management mechanism inside StatefulWidget, but this is for sure not enough to code a whole app. Most likely this results in pretty ugly code when you start coding with Flutter. But to be fair, when looking back at my first lines of java code roughly 20 years ago… no… i wont speak about that ;-)

To really understand when the Widget’s build() method is called is also not a no-brainer but more and more tutorials and videos are out in that topic space.

But to summarize it, i really would like to see more architectural blogs or documentation when it comes to best-practices and coding-patterns in Flutter.

And now?

Secretly i hoped that i can get rid of a lot of problems which you have in web development like different browsers, CSS hacks, and so on but with mobile development you just have different annoyances ;-)

I hope sharing my thoughts may help you deciding giving Flutter a try. Especially when you come from java land, you should be able to follow my thoughts on this one. I really think you can develop great mobile apps with Flutter which feels really good on the device. The community is vibrant and you feel the energy of the people behind Flutter.

I am pretty sure that i will be around in the next years to come. “I am here to stay” is the saying, right? And sorry: No code this time.

If you want to know more about well architected cloud applications on Amazon AWS or how to use Google Flutter with Firebase, feel free to head over to https://okaycloud.de for more infos.

--

--

Marc Logemann
SaaS Startup Factory

Entrepreneur & CTO - (AWS) Software Architect, likes Typescript, Java and Flutter, located in the Cloud, Berlin and Osnabrück.