Projet personnel · mai 2025
ScanNutrition
Scanner nutritionnel mobile Flutter avec traitement d'image délégué à du C++ natif via dart:ffi.
- Problème
- Le traitement d'image d'un scan en temps réel est trop coûteux pour Dart — mais réécrire toute l'application en natif serait absurde.
- Résultat
- Interface Flutter cross-platform, pipeline de traitement d'image en C++ appelé par dart:ffi.
- Rôle
- Développeur Mobile
Quel problème ScanNutrition résout-il ?
Un scan d'étiquette nutritionnelle traite plusieurs images par seconde : conversion, seuillage, correction de perspective. Fait en Dart, le flux vidéo saccade.
Quelle décision technique a été prise ?
Descendre uniquement le noyau de calcul en C++, pas l'application. dart:ffi permet d'appeler du code natif sans passer par les Platform Channels — donc sans sérialisation ni aller-retour asynchrone, ce qui serait exactement le coût qu'on cherche à éviter.
La frontière est posée à un seul endroit : une fonction qui prend un buffer d'image et rend un buffer traité. Tout le reste — caméra, interface, état — reste en Dart.
Compilation via CMake, une passe par plateforme, intégrée au build Flutter.
Qu'est-ce que ScanNutrition m'a appris ?
Une frontière FFI se paie en complexité de build. Elle ne vaut le coup qu'à une seule condition : que le code natif soit une fonction pure sur un buffer. Dès qu'elle gère de l'état, la complexité déborde.
Un projet du même calibre ?
Basé à Thiès, disponible à dakar & télétravail. Je réponds sous 48 h.
En discuter