Native Desktop client to accelerate mobile development

But before taking a look at actual native desktop apps, let’s see what running Flutter on desktop can do for people developing for mobile.

Startup time

The first thing that happens before anything productive can be done is starting the android emulator and running Gradle.

In the following Gif I recorded myself cold booting the emulator and running the default Flutter app. I took me a whopping 2 minutes and 40 seconds. Just image how much productive things could have happened during that time.

Android booting & Gradle running (speed up 10x)

What if I told you, you could be up and running in less than 10 seconds?

Running the app natively skips the whole overhead of running Android on your system and going through Gradle.

Just check this out:

Flutter Simulator starting in real time

Notice how you don’t have to leave IntelliJ. We’ve written the tooling needed to run Flutter as a native application. Works in all Flutter IDEs.

Resizable during runtime

As with any app, you’ll want to test your layout for different sizes. What do you do?

You ask all your friends with different phones and/or create a bunch of emulators to make sure your layout looks as intended on each and every device.

This feels pretty cumbersome to me. Can we do it better?

Yes, we can!

I think this is pretty self-explanatory

Work with assets on your PC

When developing and testing apps which need to interact with assets on the phone, it can be quite annoying to first move all the testing files to the emulator or device.

Wouldn’t it be nicer to just pick the file you want with your native file picker?

If you are screaming YES, then I got the right thing for you!

File picker for desktop

The best part about this: the desktop implementation uses the same method channel as the mobile implementation, therefore no code needs to be changed at all.

Hot reloads and debugging

This is all nice and fun. But hot-reloading and debugging capabilities are a must for every productive engineer.

So we made that work for desktop too!

Hot reloading and debugging the native app

RAM

Last but not least: RAM. This is a pretty big deal for people working on notebooks and/or somewhat less beefy machines.

The Android emulator eats up roughly 1GB of RAM. Now, imagine running two of those (testing a chat application or similar), IntelliJ, and the ever-RAM-hungry Chrome.

That’s pretty heavy.

1 GB of RAM for the Android Emulator

Because the embedder is running natively, there is no need for Android. Which makes it much smaller.