Présentation + Flutter pour le web (VS Angular, PHP, etc.)

Bonjour,

Je suis Web développer depuis 10ans (plus ou moins), et je viens de rejoindre la formation afin de suivre les cours de flutter.

Je me suis récemment intéressé a cette techno afin d’étendre mes horizons et je trouve avec plaisir que c’est enfin une techno qui marche vraiment et facilement (comparé à NativeScript, Xamarin, ionic, React native, etc.).

Je n’ai pas eu spécialement de difficulté à réaliser ma première application (en 2 semaines avec de l’auto-formation), mais je trouve les cours de Maxime de qualité et ils m’ont déjà permis de mettre à plat les connaissances déjà acquises, de fixer des erreurs que je ne comprenait pas jusque là et d’identifier de possibles fuite de mémoire.

Je suis impatient de terminer le cours " Créer des apps avec Flutter 2" afin d’attaquer le cours « Architecture et Navigation » avec le Navigator 2.0 qui semble être un morceau très intéressant mais pas forcément facile.

Bref, tout ça pour dire « bonjour » :laughing:

@mbritto Merci à toi, déjà un précieux temps de gagné.

3 « J'aime »

Bonjour @Gwenael,

Bienvenue à toi!
Effectivement Flutter est très prometteur, le cours avancé de Maxime est vraiment très bien fait et permet de bien organiser son code afin de pouvoir tout tester.

Vu ton expérience dans le web, je serais curieux de savoir ce que tu penses du développement de site web avec Flutter.

Bonne formation Flutter!

Bonjour Quentin.

Pour le développement de sites web, je suis plutôt habituer à utiliser NodeJS & Angular (Pour des applications Web en tout cas, genre boutique (Amazon), Gestion de tâches (Trello), intranet, etc.)
Si le site est plus simple (site vitrine d’une entreprise par exemple), Angular deviens un peut trop usine à gaz (bien qu’il soit toujours possible de l’utiliser aussi dans ce cas).

En ce qui concerne Flutter, ça doit aussi dépendre de la cible.
Actuellement je ne le choisirais pas pour réaliser des backend (espace administrateur), ou des applications complexes (Par exemple, https://paon.app/ que je développe et qui s’approche d’un CMS)

Par contre, pour un site vitrine ou un espace client pourquoi pas.
D’autant que :

  • Flutter gère probablement nativement le responsive design, ce qui est très utile (voir même une hantise) lorsque l’on n’est pas sûr du périphérique que le client utilisera pour accéder à notre site (mobile, tablette, ordi portable ou de bureau).
  • Si on peut limité les sites réaliser avec WordPress & Cie, qui deviennent de moins en moins optimisé (généralement un site WordPress n’obtiens pas une bonne note sur: https://pagespeed.web.dev/), et qui souvent n’ont pas leurs plugin bien tenu à jour (ce qui peut poser des problèmes de sécurité)

Cependant je découvre le Flutter, donc mon avis est probablement voué à évoluer.

2 « J'aime »

Merci beaucoup pour ton retour détaillé, très intéressant.

Merci pour ce retour @Gwenael ! C’est super d’avoir un développeur web expérimenté dans les parages car la plupart d’entre nous venons principalement du mobile.
Tu devrais aussi checker le cours sur les tests automatisés en Dart/Flutter avant ou en parallèle de celui sur l’architecture et la navigation :wink:

J’imaginais une autre direction pour Flutter web justement : le côté fonctionnel est très pratique à réaliser donc je le trouve agréable pour créer des backoffice justement. Pourquoi tu ne penses pas que ce soit une bonne idée de l’utiliser pour un backoffice ?

Pour le côté sites vitrine, j’avais peur de 2 choses : le poids de la page (qui inclus le moteur de rendu) and le référencement qui ne doit pas être top avec du code généré. Qu’en penses-tu ?

J’ai un début de réponse à cette question :
Des frameworks comme laravel / symfony ou autre intègrent déjà toute une couche de gestion d’utilisateurs. A savoir inscription - authentification - chiffrement / déchiffrement des mots de passe - droit d’utilisateur - etc…

Perso c’est pour ça que je n’utilise que symfony pour faire mes back office ou mes intranet d’entreprise.

Mais à l’inverse de @Gwenael je suis très tenter de me lancer sur flutter pour du back office.
Existe-t-il des lib qui font la popote que je viens d’énoncer ?

Pour un backend, flutter peut peut-être faire le job. C’est surtout pour quelques points que je ne le choisirai pas.

Comme dit @alexandre.cane il existe déjà de nombreux frameworks qui intègrent de base différentes couche métier, sans parler (pour les plus fainéant) des services qui permettent de générer des backend en quelques secondes (du moins d’après leurs promesses).
Ex: http://crud-admin-generator.com/ , PHP CRUD Generator | phpGrid , etc.

Je pense aussi aux futur développeurs qui devrons passer après nous. Flutter simplifie grandement le développement des app mobiles ; mais côté backend il ne simplifie pas beaucoup (voir pas du tout) et augmente le niveau de compétences requises pour permettre à quelqu’un d’autre de reprendre.
(Il y a moins de développeur flutter que php, et ils sont certainement plus cher aussi)

D’autant qu’en réalisant un backend en php (ce qui est très courant), il n’y a besoin de presque rien pour faire tourner le code, et il est même possible de faire des modifications à chaud directement sur le serveur sans aucune compilation / redémarrage (très déconseillé en général, mais pour un backend administrateur souvent on prend le risque…)

Je pense aussi qu’il existe énormément de possibilité de mise en page quand on cible du web, avec énormément de bibliothèques (comme Material & Bootstrap pour n’en citer que 2), et qu’il est vraiment très simple de réaliser la mise en page de ses rêves lorsque l’on maitrise bien le html et le CSS (et là, la couche flutter risque au final de nous limiter)

Enfin, bien souvent on fini par vouloir s’interconnecter avec un nombre très varié de services (Mailjet, Mailgun, Zapier, etc.) dont il existe bien souvent des sdk php ou nodejs qui font le taf à notre place, mais en flutter ? peut-être mais moins sur.

PS: Je pense aussi que la communauté PhP/Nodejs est pour le moment plus nombreuse.


Bien sûr tout cela n’engage que mon avis, et celui-ci peut être amené à changer :wink:

NB: J’ai l’impression de défendre le PhP, alors qu’en fait je suis plutôt pro NodeJS (avec TypeScript de surcroit, ce qui ajoute une couche de compilation…)

1 « J'aime »

Pour résumé, je dirait que le web est de base beaucoup plus simple (je pense HTML, CSS, JavaScript) que le mobile (Swift & Objective C pour iOS, Kotlin & Java pour Android) du coup le gain avec flutter est plus important pour réaliser une app mobile, que pour réaliser un site web.
Il peut même dans certains cas se retourner contre nous si on souhaite réaliser une mise en page précise, car là ou il suffirait d’adapter rapidement quelques règles CSS, le flutter risque de nous enfermer dans sa logique.
Cependant, le web a aussi sa bête noir : Le responsive design. Et dans ce cas, le flutter peut devenir la solution « miracle ».

A suivre…

C’est un débat intéressant (j’ai d’ailleurs renommé le sujet pour que d’autres puissent y participer).

Dans les frameworks que vous avez listé vous avez mélangé les services liés au client et les services liés à l’API. C’est un peu le risque avec PHP qui gère les 2 côtés à la fois :slight_smile:

Flutter ne peut gérer que la partie client et il fonctionne de pair avec un webservice (API) qui va justement gérer vos utilisateurs, droits d’accès, etc.
D’ailleurs rien n’empêche d’utiliser Flutter avec un webservice PHP ou Node.js. Je l’utilise actuellement avec Directus qui est basé sur Node.js.

En règle générale j’essaie d’utiliser le moins de dépendances possible car chaque librairie/Framework que j’ajoute implique :

  • de l’apprentissage et de la formation spécifique
  • de la maintenance et des migrations à chaque mise à jour du framework
  • un projet plus lourd car le framework comporte des milliers de fonctionnalités alors que je n’en utilise que quelques unes
  • des risques de bugs sur du code tiers
  • un risque d’abandon du projet à moyen/long terme qui pourrait être dramatique

Flutter étant lui même une grosse dépendance, liée au SDKs de chaque plateforme.
Il m’arrive d’utiliser des librairies externes mais uniquement sur des points très spécifiques qui je sais sont complexes à gérer moi-même et source de problèmes.

C’est intéressant comme point de vue et ça montre l’importance de la formation : pour moi c’est l’inverse car je me suis très peu formé en CSS et chaque fois que je dois en faire je m’arrache les cheveux :joy: Alors que concevoir une interface graphique avec Swift ou Kotlin ne me pose aucun problème ou en tous cas est plus prévisible.

C’est vrai qu’il est possible d’utiliser flutter avec du php en tant que webservice.
D’ailleurs en tant que dev Angular/NodeJS, c’est principalement de cette manière que je fonctionne (Front en Angular qui appel des APIs NodeJS/TypeScript). (NB: technos plus complexe que php, mais qui utilisent toutes deux le même language : TypeScript)

Cependant, dans le cas d’un backend réalisé en php on se retrouve effectivement le plus souvent à s’occuper à la fois du front et du back, d’autant que lorsqu’un framework comme laravel détecte que l’utilisateur n’a pas les droits d’accès à une page (non connecté, pas le bon rôle, etc.) il est capable de gérer automatiquement la redirection de l’utilisateur vers la page qui va bien.

Pour le web, coté front, il est aussi possible d’acquérir à moindre coût un thème développé par un designer (ex sur Backend Templates from ThemeForest) afin de créer l’interface qui nous ressemble, et en limitant les développement HTML/CSS. Perso j’en suis pas fan, car je trouve le code de ces thèmes généralement « moche » et j’ai envi de tout réécrire, mais d’autres développeurs de ma startup (moins expérimenté en CSS) en sont très content.

Je suis aussi d’accord de limiter les dépendances en librairies/framework. Mais là, c’est un non sujet je pense, car un développeur flutter utilisera aussi souvent pas mal de librairies (sur mon projet, j’ai essayé de limiter mais j’en suis déjà à plus de 30 :sweat_smile:)
Et d’ailleurs, un projet de backend php utilise généralement peu de dépendances (car le framework à lui tout seul fait presque tout, front compris).

Maintenance et migrations à chaque mise à jour du framework ? Je dirais que c’est aussi un problème chez flutter ^^

Et pour le risque d’abandon du projet, justement si il est réalisé en php avec un framework réputé qui s’occupe aussi du front, je dirait que le risque est plus faible qu’avec : un back en php avec le dit framework qui ne s’occupe que des API + un front en flutter ? Qui nécessite du coup 2 profils de développeurs différent ?

2 « J'aime »

Perso c’est exactement ce que je fais mais par souci de temps de prod car je suis tout seul et que j’ai pas envie de passer trop de temps sur le front. Ma plus value est sur le partie backend métier.
Mais je suis d’accord que le code front est non seulement moche mais surtout beaucoup plus lourd pour rien car bien souvent il y a le duo bootstrap + jquery dont on ne va utiliser que 30%…

1 « J'aime »

Oui j’ai mois aussi fait appel à ces themes à l’époque où je devais créer un backoffice chez dev2a : je vous rejoins sur le côté pratique mais avec un code pas terrible :slight_smile:

J’utilisais Ember.js qui est le premier outil pour créer des sites web que j’ai vraiment aimé. Je suppose que Angular doit avoir des concepts similaires.

Oui effectivement on a tout naturellement mélangé car justement tu peux moduler ce qui va s’afficher sur le front via le back. Par exemple sous Symfony les fichiers html (front) sont en twig (c’est une sorte de php), avec la fonction is_granted(« ADMIN ») tu peux afficher ou non certains block html en fonction de son niveau de droits. Cette fonction est directement appelée par le front.
Le front de retrouve donc dépendant du back.

Je suis allé voir https://paon.app, c’est superbe, mais il y a au beau milieu une faute, un panneau « 2. contruire… » Je pense qu’un petit coup de vérificateur orthographique, parfois … :wink:

Je le signale de suite à l’équipe COM :joy:

Salut paon.app est faite sous flutter web ?