Blog

Android, iOS, Tech

Flutter, Une nouvelle ère pour les applications cross-platform

par Florent Champigny, Ingénieur Android chez Backelite

 

Chez Backelite, nous sommes convaincus de l’importance d’un projet mobile à être développé en natif : c’est-à-dire en Java/Kotlin pour Android, et en Swift/Objective-C pour iOS. Sur tablettes et téléphones, le rendu utilisateur est primordial, et actuellement peu de solutions cross-platform sont capables de rivaliser face à un développement spécifique pour chaque système d’exploitation.

Au sein des communautés de développeurs mobile, le débat a longtemps fait rage pour savoir s’il était possible de réaliser un seul et même code source et d’avoir un rendu aussi fluide et performant que du natif. Nombreuses ont étés les solutions à avoir tenté de se lancer dans ce marché :

Phonegap : basée sur l’affichage de pages Html/CSS

Xamarin : écriture du code en C#, mutualisation de code possible

ReactNative : basé sur un moteur JS, utilisant des composants Android/iOS

 

Ces solutions ont beaucoup d’avantages, mais aussi beaucoup d’inconvénients : des lenteurs, des tailles des applicatifs très augmentées, et elles impliquent un temps de développement au final beaucoup plus important.

 

C’est alors que Google apporte sa solution : Flutter !

 

 

Flutter est apporté comme la solution ultime pour développer des applications Android/iOS en un temps record, et avec une qualité de rendu autant, voire même plus performante que les applications natives.

Les principales qualités de Flutter sont :

Un seul code tournant sur Android et iOS

Un rendu de 60fps

Un accès aux différents composants du téléphone (GPS, Bluetooth, etc)

Un projet entièrement open-source

Un respect des chartes graphiques

o   Material sur Android

o   Flat-UI sur iOS

 

 

Je vous invite à télécharger l’application de démo Flutter Gallery sur le Play Store afin de vous rendre compte de la fluidité de ce framework :

https://play.google.com/store/apps/details?id=io.flutter.demo.gallery

 

Coté développeurs

Flutter n’est pas une surcouche à Android et iOS, mais un framework Dart interagissant directement avec le moteur C++ relié à la couche native du téléphone.

 

On se passe ainsi de bytecode Java sous Android, ce qui nous permet d’avoir une fluidité de 60fps.

La création de la vue est réalisée en Dart (langage créé par Google en 2011, utilisé jusqu’ici dans des projets web/backend).

Chaque élément de notre vue correspond à un Widget Flutter, décrit en cascade (utilisant le pattern Builder) afin de définir un écran complet. On retrouvera Text, Image, Button, disposant chacun de leurs propres propriétés.

Afin de placer nos widget sur l’écran, nous utiliserons des Widget tels que Row, Column, ListView, Padding, Expanded, Flex, qui définiront la taille de leurs enfants, mais aussi leur disposition les uns par rapport aux autres. Il est important de comprendre le rôle de chaque Widget afin de construire son écran.

 

Installation

Le framework Flutter est accessible sur le site www.flutter.io, ils vous proposeront alors une installation du Flutter Doctor qui vous installera tous les packages nécessaires au développement sur votre machine.

Le développement se fera ensuite via un plugin IntelliJ, qui ajoutera le type de projet « Flutter » à la liste des projets supporté par votre IDE. De nombreuses options et volets seront ajoutés à IntelliJ, tel que le Flutter Inspector et le Flutter Outline (semblable à la preview d’Android Studio).

Il vous sera directement possible de développer en Dart, et de publier votre application sur le simulateur iOS ou l’émulateur Android.

 

Hot reload

Flutter vous fera gagner du temps de développement, il n’est plus nécessaire de recompiler son code pour tester une modification, utilisez simplement le hot-reload, je vous laisse apprécier la rapidité d’exécution :

 

 

Conclusion

Contrairement aux solutions déjà présentes sur le marché, Flutter semble tenir ses promesses : une facilité de développement associée à une fluidité d’exécution en font un framework auquel nous nous devrions songer lors du développement d’un nouveau projet Android/iOS. Actuellement en Release-Preview, plusieurs applications sur le Play Store ainsi que sur l’iTune Store sont déjà développées en Flutter, sans que nous fassions la différence avec une application native à la plateforme.

Il est important de noter que Google travaille actuellement sur un nouveau système d’exploitation nommé Fuschia, un possible successeur à Android, et que les applications de ce dernier sont développées en Flutter !