When evaluating new technologies, I find details of what something can’t do even more useful than what it can, even if such lists can seem horribly negative.

Welcome to doom and gloom.

I’ve tried to avoid matters of opinion and things people don’t like (such as a lack of a markup language), just hard facts about what Flutter can’t currently do, and when it will hopefully be able to.

Note: article fully updated as of August 2020 for Flutter 1.20.

Directly Calling Native APIs from Dart

Flutter can interact with native platform APIs, but not directly. This differs from Xamarin and NativeScript where you can use all native APIs using the same language you write your app in, via language bindings.

NativeScript and Xamarin have direct access to platform APIs

What’s the impact?

For most common cases, very little. Someone will probably have done the work for you, and you can just use a plugin.

In more custom scenarios, you’ll have to write native Swift or Java/Kotlin code to interact with native APIs, using different IDEs, and communicate via platform channels.

Will this change?

Not anytime soon.