Développement d'applications Flutter

Développement d'applications Flutter à Toronto et partout en Ontario : des applications iOS, Android et Web à partir d'un seul code en Dart — des applications de terrain hors ligne d'abord, comme celle du poste de pilotage bâtie pour les services d'aviation et de lutte contre les incendies de forêt de l'Ontario, des applications grand public livrées sur Google Play en trente jours, accessibles par construction, intégrées aux systèmes que vous exploitez, publiées et exploitées par l'équipe qui les a bâties.

Les utilisateurspilotes · équipesLes donnéeshors ligne d'abordLes plateformesiOS · Android · WebUn seul code · Darttesté · accessible · à vousL'interfaceun système de design · rendu natifLe modèle d'événementsune classe · en file hors ligne · rapprochéPublierCI · magasins · chaque mise à jour1 plantage · attrapé en CIiOSApp Store · TestFlightAndroidGoogle Play · 30 joursLIVRÉWeble même code · AAle codeattrapé en CIen magasinlivré
Un seul code en Dart. Le modèle met la journée en file hors ligne, le pipeline de publication attrape le plantage, et le même code est livré sur l'App Store, Google Play et le Web.
iOS, Android et Web, en Dart
1 seul code iOS, Android et Web, en Dart
du lancement à Google Play, pour CYA Live
30 jours du lancement à Google Play, pour CYA Live
prêt pour le poste de pilotage, d'une seule main, pour les pilotes de bombardiers d'eau de l'Ontario
Jour + nuit prêt pour le poste de pilotage, d'une seule main, pour les pilotes de bombardiers d'eau de l'Ontario

Un seul code, bâti pour durer

Flutter permet à une seule équipe de bâtir des applications iOS, Android et Web à partir d’un seul code en Dart, compilé en code natif, qui dessine la même interface sur chaque plateforme. Nous l’utilisons parce qu’il permet aux mêmes personnes qui modélisent les données de concevoir l’interface et d’écrire l’intégration, et parce qu’un seul code peut être testé, mis à niveau et compris la troisième année. Les deux projets de cette page montrent l’étendue : une application de poste de pilotage pour les pilotes de bombardiers d’eau de l’Ontario qui a sorti la journée de vol du papier, et un client vidéo grand public livré sur Google Play en trente jours pour une plateforme d’un million d’utilisateurs.

Le modèle, c’est l’application

Une application est maladroite ou simple selon son modèle de données, pas selon ses écrans. Pour le Rapport de vol quotidien électronique, modéliser chaque événement d’une journée de vol — largage d’eau, ravitaillement, chaque type de mission — comme le descendant d’une seule classe d’événements a été la décision qui a rendu l’interface assez simple pour être utilisée d’une main, la nuit. Nous commençons là, puis concevons sur de vrais appareils, puis bâtissons par incréments de deux semaines avec l’intégration en parallèle, pour que l’application livrée soit celle dont les gens sur le terrain se serviront vraiment.

Le Rapport de vol quotidien électronique sur un iPad monté dans le poste de pilotage d'un hélicoptère bombardier d'eau, les événements de la journée de vol consignés à côté des instruments
Le poste de pilotage est le bureau. Le Rapport de vol quotidien électronique tourne sur un iPad monté à côté des instruments d’un bombardier d’eau de l’Ontario, consignant la journée de vol d’une main, de jour comme de nuit — bâti en Flutter pour le ministère des Richesses naturelles et des Forêts. Lire l’étude de cas.

Ce que nous bâtissons avec Flutter

La performance native à partir d'un seul code — et l'ingénierie qui fait survivre l'application à sa deuxième année

Un seul code, toutes les plateformes

Du Dart compilé en code natif pour iOS et Android et pour le Web à partir de la même source, avec un seul système de design et une seule suite de tests. Plus rapide à bâtir, et un seul endroit à corriger — ce qui compte davantage la deuxième année que le jour du lancement.

Des applications de terrain hors ligne d'abord

Des applications qui fonctionnent là où le réseau ne fonctionne pas — dans le poste de pilotage, sur le chantier, sur le terrain — avec un modèle de données qui met les événements en file et se rapproche quand la connexion revient. Le Rapport de vol quotidien électronique pour les services d’aviation, de lutte contre les incendies de forêt et d’urgence de l’Ontario en est le modèle : chaque événement descend d’une seule classe, se consigne d’une main, se lit de jour comme de nuit.

Des applications grand public, vite et à grande échelle

Quand une plateforme a besoin d’un client pour une date, nous le livrons : l’application Android de CYA Live est passée du lancement à Google Play en trente jours, à parité de fonctions avec le Web et iOS, avec la vidéo en direct et le clavardage modéré dont dépend une plateforme d’un million d’utilisateurs.

Accessibles par construction

Une sémantique pour les lecteurs d’écran, un contraste qui passe, du texte qui s’agrandit, des cibles qu’on atteint du pouce — intégrés dès le premier écran et testés avec VoiceOver et TalkBack, selon les WCAG 2.1 AA partout où elles s’appliquent. C’est la même pratique en accessibilité qui sert nos clients du secteur public.

Intégrées aux systèmes que vous exploitez

Des API en Python, des portails Odoo, des applications Quickbase, des systèmes hérités : l’application est une extrémité d’une intégration que nous écrivons et testons de bout en bout, pour que ce que le terrain saisit atterrisse là où le bureau le lit.

Publiées, et exploitées

Des comptes de magasins à votre nom, des constructions continues, TestFlight et les pistes de test internes, le signalement des plantages, et les mises à jour que les plateformes exigent chaque année — versions de Flutter, versions des systèmes, politiques des magasins — prises en charge par l’équipe qui a écrit le code.

Comment se déroule un mandat d'application

  1. Découvrir

    Les utilisateurs, les conditions dans lesquelles ils travaillent, les données que l’application doit saisir ou montrer, et les systèmes auxquels elle doit parler. Une portée que vous pouvez chiffrer et un plan que vous pouvez défendre.

  2. Modéliser, puis concevoir sur appareils

    Le modèle de données d’abord — c’est ce qui rend une application simple ou maladroite — puis l’interface conçue sur de vrais appareils, dans la lumière et avec les mains qu’ont vraiment vos utilisateurs.

  3. Bâtir par incréments de deux semaines

    Une application fonctionnelle entre les mains des testeurs dès les deux premières semaines, des tests à chaque changement, et l’intégration bâtie en parallèle, pas après.

  4. Publier et garder

    La soumission aux magasins, la surveillance, et un forfait dimensionné à ce que vous voulez posséder — y compris les mises à jour de plateforme que personne ne budgète.

À qui cela s'adresse

Les opérations de terrain du secteur public

Ministères, organismes et services publics dont les gens travaillent loin d’un bureau et doivent saisir la journée de façon fiable — acquis par le statut de fournisseur attitré de l’Ontario, bâtis accessibles.

Les plateformes et les produits grand public

Des organisations avec un public sur chaque plateforme, qui ont besoin que les clients concordent, soient livrés à une date et tiennent sous la charge.

Les organisations dont l'application Web doit devenir une application

Des entreprises dont les clients ou le personnel veulent la chose dans leur poche, avec l’usage hors ligne et les notifications, sans un deuxième et un troisième code à maintenir.

Dans les mots du client

Ce fut un plaisir de travailler avec Imran et Cantan Group. Un service excellent! Je recommande fortement.
Sami Siddique — Chairman, Founder and CEO, Cya LIVE

Tous les avis clients · traduit de l'anglais

Les questions qu'on nous pose

Pourquoi Flutter plutôt que le natif ou React Native?

Parce qu’un seul code en Dart se compile en applications iOS et Android véritablement natives et pour le Web, avec un moteur de rendu qui dessine les mêmes pixels sur chaque plateforme, et parce qu’une équipe peut posséder un seul code correctement plutôt que trois passablement. Nous dirons quand le natif est la bonne réponse — surtout le travail matériel profondément propre à une plateforme — et c’est plus rare que les gens ne le pensent.

Un seul code couvre-t-il vraiment iOS, Android et le Web?

Oui, avec jugement : une logique, un modèle et un système de design partagés, et des pièces propres à chaque plateforme là où elles diffèrent vraiment — notifications, permissions, certains matériels. Le Rapport de vol quotidien électronique sert chaque type d’aéronef et chaque mission à partir d’un seul code; le client Android de CYA Live a égalé ses clients Web et iOS à partir de la même API.

L'application peut-elle fonctionner hors ligne?

Elle peut être conçue pour, et les applications de terrain le doivent. Le modèle de données met en file ce qui se passe, le stocke localement et se rapproche quand le réseau revient — avec les conflits réglés par règle plutôt que par le dernier qui a synchronisé. C’est une décision de conception prise à la découverte, pas une fonction ajoutée plus tard.

Les applications Flutter sont-elles accessibles?

Elles le sont quand elles sont bâties pour l’être : Flutter expose une sémantique à VoiceOver et à TalkBack, et tout le reste — contraste, agrandissement du texte, ordre de focus, taille des cibles, mouvement — nous appartient. Nous bâtissons selon les WCAG 2.1 AA partout où elles s’appliquent et testons avec les lecteurs d’écran, parce que les gens qui se servent de l’application y ont droit.

Qui possède l'application et les comptes des magasins?

Vous. Le code vit dans un dépôt à votre nom, les comptes App Store et Play Console sont les vôtres, et nous les exploitons en votre nom aussi longtemps que vous le voulez.

Comment une application est-elle tarifée?

Un prix fixe pour un mandat délimité après la découverte, avec le nombre d’écrans, le modèle hors ligne et les intégrations comme principales variables, et un forfait pour les publications, les mises à jour de plateforme et les nouvelles fonctions. Nous préférons chiffrer une première version plus petite que vous pouvez étendre plutôt qu’une grande à laquelle vous devez vous fier.
Contactez-nous

Un problème difficile et un budget?

Dites-nous ce qui le motive. Vous parlerez aux personnes qui font le travail.

Une phrase ou deux suffisent : le problème, le système, l'échéance.