Impressions on Flutter
22/05/2019 0 Posts
In a nutshell, Google's Flutter is the best cross-platform mobile framework at the moment. *Mostly because the rest are pretty weak.
It's not mature though, there are a lot of arcane errors, development frustrations (Given that I encountered problems when building trivial apps).
It does have a lot of out-of-the-box features needed for prototyping and rapid development (the default UI is great and has a ton of useful code in the framework).
State management does not enforce or encourage a specific method. This gives flexibility, but in my opinion it creates a mess / wild west of projects that manage state completely differently from each other. The only thing that is enforced is unidirectional data flow, as in React. Existing patterns like Redux exist/can be easily implemented, but in my opinion, are not too well suited. Stream builders seem better but add complexity when you need combined data streams. For more on state this video is a nice overview.
Dart is statically typed, which is good, but it has the drawback that it lacks a wide community & resources because it's a very niche language (it's not weird or hard if you come from other imperative / OOP languages like Java & C#)
Development is much faster (somehow!) than actual native development, changes to the codebase are compiled much faster, but hot reloading doesn't always work / is a bit unreliable (as in native development).
Package management is very weird from what I've seen, they do have a built in package manager like maven, npm, nuget, but it doesn't work via CLI, you just write dependencies on a yaml file, which can be error prone; but this is a minor issue.
Debugging is quite good, and it has a decent integration with VS Code. The errors of the framework are not the best I've seen, but understandable enough, and usually are helpful (few times they are misleading on the source of the error)
UI animations are a major focus of the framework and work excellently, and are not at all difficult to create.
The documentation of the framework is not incredible (it can be a bit hard for newcomers), but it's good enough.
Compared to existing native development, it has advantages (it's cross platform & faster in dev time). It still has some issues between iOS and Android (because X feature may only be available on one) and you have to take into account platform differences, but in my experience it's better than React Native at this.
Lastly, if you are using a visual designed for apps (drag n drop WYSIWYG), I haven't seen one yet for flutter (though I would expect one in the future, at least for android)
TL;DR: It's better than existing solutions, but I'd give it some more time to grow before using it on a real project.