Aller au contenu
M. SALL
Travaux

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
Flutterdart:ffiCMakeTraitement d'image

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