How native is an app created with Flutter? - dart

I've been asking myself this for a long time: Are the applications created with Flutter 100% Native? The performance of a Flutter app can be equal to or better than an app created with Java / Kotlin? Many people are saying that the applications created with flutter are not really native, they are hybrid or similar, and I have read the same in some places on the internet, so I would like to read what you say, thanks.

The answer depends on what your definition of "native" is.
To some people, "native" means using the UI widgets provided by the OS.
Flutter applications are "native" in the sense that they are compiled to native machine instructions rather than being interpreted by a VM. For Android and iOS apps, that means that they are compiled to ARM code.
From a fidelity standpoint, this does mean that Flutter UI widgets might not look or behave quite the same as the OS's UI widgets. From a performance standpoint, however, Flutter UI widgets can be as (or possibly more) performant than the OS's.
Further reading: Pitching Flutter to your company or client: 3. Native Apps

According to this article, native app is better than flutter in terms of performance.
https://thoughtbot.com/blog/examining-performance-differences-between-native-flutter-and-react-native-mobile-development
So I guess the question to your answer would be no, but Flutter is definitely a "good enough solution" for most cases. There wouldn't be a case where you will be able to notice the difference in performance by human unless you are developing a super cpu intensive app.

Related

Does flutter/dart work on desktop as a native app?

I'm interested in learning Google's flutter/dart but I want to be able to create desktop x86 apps with it like with react native. Is there built in support or any 3rd party addons that I can use to make drsktop applications with flutter/dart?
I'm having a hard time deciding whether this question is off-topic or not; I won't vote to close it for now but I wouldn't be surprised if someone does (since it veers pretty close to the 'recommend a tool' type of question).
To answer your question though, the answer is sort-of for now. From the flutter FAQ:
Can I use Flutter to build desktop apps? Yes, but right now it’s not
very well supported. We’re working on making this a first class
experience. Our current progress is documented on our wiki.
The wiki is here and at the current time of this answer it has some basic information on how to set up building a flutter app for windows, mac, and linux, along with warnings that everything may change at any point and that any plugin needing native code won't work as they only contain code for iOS/Android. The flutter-desktop-embedding repository (left-over from before google officially started working on desktop embedding) is an example of how to get started but your mileage may vary as I'm not sure how up to date it is.
Basically, you could start developing a flutter app now on desktop now, but I wouldn't expect to be able to publish that app any time soon without a significant amount of work to get everything to line up properly. Also, publishing it might be difficult at least on windows, and on windows the current shell uses GLFW which isn't probably something you'd want to use in a released app if possible. I'm not from google so I can't speak as to their plans but I would guess (and hope) that there will be some sort of announcement at Google I/O about desktop embedding, but no guarantees.
So TLDR; yes for development purposes but no for deployment.

Xcode (swift) vs Unity for isometric 2d mobile-apps - Performace, Package Size

Let's assume I want to develop an isometric 2D mobile-game such as Clash of Clans for example.
My main target would be iOS but of course Android would be nice, too (but not a must-have).
Now I have to decide to either program with Apples XCode (therefore Swift as a language, which I am already pretty familiar with), or develop my game with Unity3D (and therefore C# as a language, which I am also pretty familiar with).
Personally, I don't prefer one over the other.
So much for the set-up.
As I don't have any preferences, I'd like to choose the one that offers the most benefits for my 2.5D game to me.
The questions:
Is there a difference in getting an approval for the App-Store if you program in Swift, or use Unity; C#?
How big is the difference of the published package-size of the app between Unity and XCode?
Does my Unity-written app run as smoothly as my XCode-written app?
I hope you could help me with that.
If I missed some points there, feel free to criticize me and give me your opinions on it.
Greetings
Chriz
Is there a difference in getting an approval for the App-Store if you program in Swift, or use Unity; C#?
No, given this general comparison - there should be nothing here favoring or disallowing one over the other.
How big is the difference of the published package-size of the app between Unity and Xcode?
That is very hard to say. There will be added libraries for Unity inclusion whereas Apple would already have shared libraries apart of the OS - used by every app. Think shared libraries here - only Apple is permitted to do this. Not to be confused with the to be newly released iOS 9 'App Thinning'.
The larger weight will be media/images/bitmaps.
Does my Unity-written app run as smoothly as my XCode-written app?
Since they both end up using OpenGL, the end result should be the same or very similar. Obviously as the OS and device mature - if Unity doesn't leverage it, they could end up giving up performance advantages.
But... the flip side of being so tightly coupled with Swift/iOS/Apple, is you abandon your Android market - and if you are even considering it - I'd suggest Unity based on what you shared if there is a remote possibility you want to deploy to Android, desktops, *TV devices in the future.

How to develop for multiple platforms

I have made my first app in the Android platform. However this is not the only platform and I want to get my apps published on at least Android and iOS platforms.
I would like to have one developing platform for both platforms. What is the options?
I have now tried Flex, Air with Flash Builder. It seems quite promising but the future seems to be a bit uncertain and are also more expansive.
It would be interesting to have some suggestions about what developing tools to focus on if I would like to develop apps on both Android and iOS.
It depends what kind of apps you want to build (i.e. Games, Content Aggregators, etc.) because each 3rd party "App-Generator" that deploys to multiple platforms has their strengths and weaknesses.
Here's a (brief) list:
Appcelerator's Titanium SDK - leverages mobile-browser-based features, mostly for content-aggregators, simple or core feature list on platforms
Corona - leverages LUA-scripting language for 2d / more simple games and applications; has a growing user-base and community; possible to leverage for core-experience as well
Unity - 3d experience, games, usually for more high-end, premium experiences
If you're going to develop on the platform, I always recommend build to that platform's language since you'll never have to worry about what happens when the language is upgraded and your "app-generator" hasn't upgraded yet.
It will also help you to learn the language on that platform (Java, C#, Objective-C, etc.)
I know it's old topic but for those who are still looking for rapid mobile development there is also Kinetise that is code-less tool and offers also backend system/CMS.
You can use Sybase Unwired Platform. It has Device App Designer which can create applications for Blackberry ,Android and iOS.
If you are aiming for high quality, I don't think there is any other way than going native for each platform. Also keep in mind that different platforms have different UI guidelines and principles, and doing a multiplatform project is not a good enough reason to abandon those guidelines.
I recommend phonegap: http://www.phonegap.com

Is Adobe Flash Builder 4.5 good enough for cross platform applications

I am planning to develop a outlook based app for cross platforms(iPhone,blackberry playbook and andriod).I recently heard about the adobe flash builder 4.5.1 update to support these platforms using flex framework and action script. I would like to know the hidden pros and cons of this tool in developing cross platform apps.
Few Queries:
Is it compatible with iOS5?
Is it giving exact native look across platforms?
Is it fast and responsive for touch based events?
Can we include any third party sdk's into flash builder project like 3D openGL and external libraries?
Does it have all UI Controls support for all platforms?
Any challenge or hidden disadvantages apart from the above queries are highly appreciated...
Thanks in advance...
My company is developing cross-platform business apps in Flex and found that the performance is good enough for our purposes. I would imagine an email app would be the same, but if you are trying to do streaming or voice quality, I suspect you might want to write to the hardware layer.
Flex does a pretty good job at supporting native look and feel, but you need to think about/design and structure your app up front (ie. does the gestures in your app design match the feel of those environments). If you don't design for it, it won't happen.
By and large having one code base will reap you large benefits. But if you've not written cross platform applications before (linux/Windows/Unix/Mac, etc), you might find more of a learning curve in your thought process and design process.

Are there any limitations of Flex 4.5 mobile apps on iOS?

I've looked at a few demos from adobe that show apps built with Flex 4.5 running on iOS from simple list views to video capture. This has made me wonder if its an effective solution to build cross platform mobile apps.
For those of you who have taken Flex 4.5 mobile for a spin, what is your impression on the capability and performance on iOS. Is there anything you can't do with Flex 4.5 mobile that you couldn't with a native app? Are there any limitations?
The mobile story in Flex is quite strong, in my opinion. It is what has attracted me to the platform and what seems to be bringing life into the Flex community.
The experience for developing apps in Android and iOS is quite fantastic, actually. The velocity in which you can dev is blazing and the abstractions provided by Flex (data binding, state management, skinning, etc) give you the ability to totally rock your app.
The performance is better than I had expected. It is not as great as a native app, but it certainly gets the job done. The ability to share code and UIs between Android and iOS more than make up for it in most cases.
There are, however, limitations. For one, you are not using the native widget set. You are using the Flex widget set. This means that you do not get the native look/feel. For this reason, it is best to build apps that look like YOUR app... not a Flex app or a native app. There are lots of popular examples in the app stores that work this way... and a Flex app pretty much requires it in my opinion.
There are also a lot of APIs not available to you. Flex provides hardware abstractions for the most popular APIs (video, audio, accelerometer, positioning, webkit, etc) but platform specific APIs are still missing (contacts, calendar, system notifications, etc).
At that point, it is worth asking what your app needs to do. Does it have a lot of native interfacing? If so, Flex might not be right for you. Find the APIs you need to talk to and make sure Flex has an abstraction for you. If it is a data-centric display/edit app, then Flex is a strong fit.
Hope this helps :)

Resources