6

Recently I came across this new fancy, as they call it "SDK for crafting high-quality native interfaces", thing called Flutter.

However, there are a few things that are still unclear to me. Are there any things that can not be achieved using Flutter that could be easily done via native Android or IOS SDKs?

They say that if we need native functionality we can easily code it using MethodChannel on Android and FlutterMethodChannel on IOS.

As far as it seems, Flutter is promising in fast and quite easy app prototyping, however, would you consider using it for applications that might require a lot of native SDK functionality such as background services, sensor data, etc...

VilleKoo
  • 2,827
  • 2
  • 14
  • 23
Mantelijo
  • 121
  • 1
  • 7
  • 1
    for starters, you don't have to build to see the resulting UI – DennisVA May 24 '18 at 13:00
  • Background services are still not well supported in Flutter directly (as some other things). You can combine native Android and/or iOS SDK with Flutter. `MethodChannel` are used to communicate between native code and Flutter Dart code. – Günter Zöchbauer May 24 '18 at 13:04
  • https://old.reddit.com/r/FlutterDev/comments/8lvi4b/what_cant_flutter_do_limitations/ – denvercoder9 May 25 '18 at 09:32
  • You can't create Watch apps as discussed [here](https://stackoverflow.com/questions/53048589/adding-a-watch-app-to-a-flutter-ios-application) – iRestMyCaseYourHonor Dec 02 '18 at 19:45

2 Answers2

14

The way I think of flutter as a framework is it has two main parts. First, it wraps a rendering engine with high level primitives for implementing modern mobile apps. This part includes things like gesture detection, animation, physics, and everything else in these slides. This is the core of what Flutter has to offer.

Second, Flutter is a series of native platform plugins. Plugins delegate work to the platform, which in turn implement platform-specific capabilities and report back to flutter through a unified, platform-independent, interface. This includes things like GPS, camera, media playback, etc. Plugins leverage the underlying platform to enhance core functionality with things Flutter can't or doesn't want to reimplement by itself.

In this sense, Flutter is potentially no less capable than the platform it runs on, provided there are plugins that will surface the needed functionality. We are not there yet but there's already a lot you can do with the existing plugins, plus the ecosystem is growing. For example, just last week community added support for video recording in the official camera package.

That said, there are cases when the advantages of Flutter start to diminish. One such example I can think of is that Flutter's rendering engine, Skia, is a 2D rendering engine, so if you're trying to do things like 3D graphics you might find yourself working around the framework by writing more plugins than actual Flutter. 2D rendering is what you'll want for most apps, but it makes the framework less appropriate in special use cases like gaming.

Besides, you'll definitely see limitations due to Flutter and Dart being in its early years. E.g. Flutter only outputs Android APKs for arm targets at the moment. But there is no inherent reason why this happens, problems like this will likely be resolved given time.

Edman
  • 5,335
  • 29
  • 32
2

A few come straight to mind. Neither React Native nor Flutter support them.

  1. Apple Watch Apps
  2. App Clips
  3. Widgets

That's for iOS.

As time goes on, there will be less and less supported by the cross platform technologies as the native technologies work to keep them unique and specific to their walled garden.

Peter Suwara
  • 781
  • 10
  • 16