How can Flutter enhance your development experience

BrainMobi
7 min readJun 7, 2019

--

First Android and then Flutter, both are expansions of Google. That means google shall be managing both the native and cross-platform mobile application development methods for android based systems. Google started the Android Development Project way back in 2005 at Android Inc. Flutter project began as an expansion programme for Google following which the first ever Flutter SDK was released in 2017. It would be intriguing to see how Flutter app development parallels with android especially with Fuchsia on the uprise. Let us take a dig on all those questions.

Development companies are always looking for better alternatives when it comes to developing apps within the smartest manner of budget and time. Native mobile app development for iOS or Android always incorporates two tech stacks for the corresponding platforms and this usually results in two different teams and higher cost. This is one essential reason why companies and developers prefer cross platform development solutions. React Native owes his popularity to this fact.

Flutter is a similar release on this grounds which is another cross-platform mobile development framework picking up boom in the market recently. Following this post we shall emphasize on how influential flutter app development can be for android developers.

What is Flutter

Flutter is an open-source, multi-platform mobile SDK which can be used to build iOS and Android apps using the same source code. Flutter has been accessible to developers since a long long time, but it has gained major prominence since it was officially featured at Google I/O 2018 along with a release preview of Flutter. Google announced its first stable version of Flutter with loads of new features on Flutter live on 4th December 2018. Major standouts like AliBaba are already using it for the development procedures.

As of yet Flutter shows close similarities to React Native but comes with extended support support of native features.

Flutter Development vs native Android app development

Native Android app development has taken the high ride in the field of app development. Recently, Google announced Kotlin as the official language over Java. Google along with that is also working on another operating system for both Chrome and mobile combined which is Fuchsia.

Without a doubt native Android apps developed with Android Studio have performed greatly when it comes to the features and design. While it comes to the native experience of the platforms then hybrid applications are easy to detect. Flutter does eliminate these elements and brings a rather seamless experience to hybrid applications by making it slick, native and smooth to the next level. How does Flutter do this?

Plenty of android developers ave experience their concerns and opinions with respect to Flutter online. It is quite a hot debate the fact that if Flutter shall replace Java and native Android development in the long run of mobile applications. Judging from the reception it is quite clear that native Android developers cannot ignore Flutter for sure.

Flutter is surely different from the native Android development tools and has been a major concern regarding the adaptability of Android developers. Flutter’s official documentation has a clear guide on Flutter for Android developers besides mapping the concepts for native android skillsets.

Let us compare how Flutter has made advancements in Android development based on some important criterions:

  • Technical architecture
  • Developer productivity
  • UI components
  • Testing support
  • CI/CD support

Technical architecture

Native Android Application and Flutter architecture have quite a few differences in the corresponding tech stack.

While both Flutter and Android were developed in Google but there is still a considerable difference in the technical architecture of both platforms. Flutter makes uses Dart as the programming language, while native Android development makes use of Java or Kotlin.

IDE is a convenience factor as Android Studio can be used for both Flutter as well as android based development. Besides this Flutter apps can also be developed within lightweight editors, like Sublime Text, Atom or VIM, or in an IDE like IntelliJ Idea.

Native apps build using java and kotlin are slick and fast and Flutter takes that one step ahead. Flutter on the other hand uses the Dart framework and does not require the bridge to interact with the native modules. This is to say that the Flutter engine incorporates everything that a flutter development operation requires for the app development.

Developer productivity

While developing apps natively, Android engineers need to implement all the tools that Android Studio can provide besides the native build and platform tools provided by Android Studio. Within its IDE Android Studio has all the tools integrated for a developers advantage. Following which the testing processes can be further conducted with the android studio or any emulator. Every time a developer makes a change to the application, they have to incorporate the changes the app code or any third-party dependencies in some cases to see the changes in the emulator or on corresponding devices. As a native Android developer, you might have experienced the amount of time this process takes.

The hot reload option in Flutter lets you instantly witness any change the developer makes, the changes appear in the emulator or devices instantly. As the application scales in size, developers would then need to adopt new techniques in order to make full use of this feature.

Gradle takes responsibility for the dependability management in the Flutter environment. There are plenty of java and kotlin packages in the market and Gradle can handle all of them pretty effectively within the Android ecosystem. Pub is the dependency management system for Flutter. The Pub Package manager comes inbuilt within Flutter apps, following which it is easy to get any new dependencies for the development.

On the not so bright side Dart is not a common programming language and lacks support when it comes to integration alongside the several IDEs and text editors. It could prove a very steep learning curve for developers in comparison to the traditional native feel. While Java has been there for years and Kotlin is more of a type-safe language, native languages are more secure when it comes to synchrnization with Android Studio. There is lots of community support for native languages as well.

UI components

Front-end developers spend a great deal of time building UI.

The native UI components provided by Google have proven powerful and come with a good documentation when it comes to building UI. The UI can be also developed using the interface builder with in the android studio. Using that feature UI can be built faster implementing the native development tools. Android UI docs can be used to access any relevant information that can be used while a UI implemenation task.

Flutter UI engine is comparatively different, and Flutter apps run on its rendering engine and its framework. Flutter implements the concept of widgets which are used to build complex UIs and functionalities. The Flutter UI is primarily a tree of stateless or stateful widgets. There are plenty of widgets in the catalog available which help build complex UIs which provide support for both Material Components for Android and Cupertino for iOS. This makes the Flutter layout pixel perfect as well.

Testing support

Native Android tools have tremendous support for testing. Native apps can be tested easily using the Android studio itself or using a command line on Gradle. This lets you add unit, integration, instrumented and UI tests for Android based app. There are plenty of Java and Kotlin frameworks like JUnit which enable lower level testing and Espresso is supported for the UI testing purposes. There is plenty of painless support for mocking things with frameworks like Mockito.

Flutter helps provide a solid testing framework which helps developers to write tests for every unit, functional and UI level. Widget testing is another cool feature that Flutter provides in order to run UI tests one the same scale as unit tests. Flutter has plenty of extensive documentations which expand the hows of testing Flutter apps at different levels with an example code. Integration tests for Flutter are similar to UI tests of XCode which go through the UI to perform specific operations. The Flutter integration tests also run in a separate process and can be implemented on devices or also simulators or emulators. The independent packages that come with flutter help conduct the process an each and every step from driver to drive.

CI/CD support

Continuous integration and continuous delivery practices help deliver android applications deliver faster.

Outside the IDE the process of building native android applications is a little difficult. Native android applications have good support for automation testing and also when it comes to building automation and publishing from Android studio. However, Google hasn’t provided much of a CI/CD platform for android. Native Android developers for this reason have to rely on third-party CI servers for example Jenkins, TeamCity, or mobile CI services like Travis CI, Circle CI, Neverode, Bitrise, etc. Luckily, native Android apps can be built using Linux, and hence the CI/CD part for Android is much easier in comparison with any iOS apps. This every deployment of android app using other CI services requires an additional setup.

Flutter team at Google also partnered with Nevercode and announced its latest Codemagic CI/CD solution inherent for Flutter based apps at Flutter Live, London. Codemagic is a very convenient CI/CD solution developed at Nevercode which automatically helps detect, build, test and package a Flutter app with zero configuration. Using Codemagic, Flutter apps can be built, tested and also deployed to Play store easily for downloads.

That was for all the comparison that Google’s native and cross-platform solution for mobile app development has to offer. As one of the top Flutter app development company, we at BrainMobi have made plenty of research endeavours in picking out the best suited SDK for such purposes and our experiments with Flutter are proving very productive. If you have the idea for a mobile or web application, feel free to write to us at sales@brainmobi.com .

--

--

BrainMobi

BrainMobi is a top ranked web & mobile app development company. Endowed with 70+ industry experts, we have successfully built 250+ projects. www.brainmobi.com