Shooting yourself in the foot guide, or is it possible on Flutter?

  1. Overdrawing. 6 years ago nobody cared about this. When I started, I’ve set backgrounds for each layout, and of course performance decreased like crazy.
  2. Lots of nested LinearLayouts, which brings a mess measuring and drawing UI.
  3. Doing heavy operations inside onDraw function.
  4. Blocking Main thread. It includes such things as working with files, string formatting, working with database, e.t.c.
  5. Memory leaks, and objects allocations.
  1. Dealing with huge images.
  2. Overdrawing and badly composed layouts.

First example

  1. Reading “Getting started” from flutter.io.
  2. Setup Flutter.
  3. Searching for any collection view in the documentation.
  4. Searching for “How to load image by url in flutter?”
  5. Some copypasting.

Second example

Ugly layout use-case
GPU Overdraw
GPU rendering profiling
Flutter ugly layouts

So the question is how Flutter performs so good?

Advantages:

  1. Easy to start. All setup took 20 minutes. It’s really impressive.
  2. Android Studio support. I think that Android Studio is one the best IDEs ever made. For Flutter all useful features of Android Studio are available.
  3. Dart looks familiar for me than Javascript.
  4. UI kit is flexible, you can have Android UI on iOS device and the other way around. Or you can have different UI depending on platform
  5. Hot reload is really fast. So if you work on UI, you can see all your changes in the real app.
  6. Documentation is awesome. Good work by Flutter team. For implementing these use-cases I’ve used just flutter.io to get information.

Disadvantages:

  1. Dart as the main language. I understand why Flutter team has chosen Dart, and it’s totally fair and makes sense. But this point is just about the language. Kotlin gives me more fun. :)
  2. Profiling doesn't work for emulators. It’s my personal pain point, because I don’t have testing device.
  3. You don’t need to care about code quality so much. Writing spaghetti 🍝 code is allowed, as soon is it doesn’t break performance. For me this point is the most painful. Now whole work is already done by Flutter, you don’t need to know how engine works, you don’t care about 60 fps, and of course you don’t care about code quality. I think these things will bring a bunch of non supportable projects, obfuscated by developer :) And when you’ll try to ask some project owner, manager or CEO, to refactor this, I believe they will ask you: why we should break something which works perfect?

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store