Flutter — Why we use it?

Manabie Tech-Product Blog
Manabie
Published in
2 min readJan 2, 2020

Greetings from Manabie,

Welcome to our Tech & Product Blog where we share about what we are doing at Manabie, and our motivation for such an effort. Today, we will walk you through a brief introduction of our Mobile Development technology.

We are building a Mobile Apps Ecosystem, consisting of 4 mobile apps: Learner App, LMS App, Coach App, Tutor App — and all of them are being built with Flutter on Android and iOS.

In this article, we will share the benefits of using Flutter for Mobile Apps development.

1. High Productivity:

  • A plenty of good documents and good examples.
  • A large and supportive community with over 80k stars on Github and packages to build your own products.
  • With Flutter, the products are built for mobile, web, and desktop from a single codebase even for Fuchsia OS. This can definitely save you both time and resources.
  • Firebase services supported by FlutterFire plugins.

2. Great performance:

3. Compatibility:

  • Flutter is developed with low coupling with the native platform. You will experience less or no compatibility issues on different OS versions.

4. GRPC supported:

  • GRPC supports Dart programming language, so we can implement the connection for communicating between server and client.
  • With Unary RPC: we are using for the client sends a single request and gets back a single response.
  • With Server streaming RPC: the client sends a stream of requests to the server instead of a single request. The server sends back a single response for the clients to receive data emitted from the server. We are using this for the chat feature.
  • With Bidirectional streaming RPC: the client and server can read and write in any order — the streams operate completely independently.

5. Testing & CI/CD support

  • Flutter has unit test, widget test, integration test libraries for testing. We prefer writing unit tests for package features first at this moment. We will cover the test for code as much as possible later on.
  • We are using Github Action for CI/CD and Firebase App Distribution to deliver the app to testers.

6. Easy to interact between the app and the native platform.

  • Flutter can’t solve all matters on the mobile side. Actually we faced a problem with Webview Flutter on Android and we had to direct to use Webview on native code.
  • In order to interact with the native platform, use MethodChannel and EventChannel.
  • In order to embed a view from native platform to Flutter, use AndroidView for Android View and UiKitView for iOS View.

--

--