4.6 KiB
FIN65 Mobile V2 - Offline-first SQLite
Cette version ajoute une vraie base locale SQLite côté mobile.
Ce que ça change
- L'app affiche les dernières données connues même si le backend PC est éteint.
- L'app garde localement :
- les comptes ;
- les catégories ;
- le dashboard ;
- les dernières transactions ;
- les opérations en attente.
- Si le backend est indisponible, une nouvelle dépense/recette/transfert est placée dans une file d'attente locale.
- Quand le backend revient, le bouton "Synchroniser" envoie les opérations en attente, puis recharge les données fraîches.
Installation dans le projet Flutter existant
Depuis :
D:\07-Logiciels\20-FIN65\fin65_mobile
Copie/remplace depuis ce ZIP :
pubspec.yaml
lib\
README_MOBILE_OFFLINE_SQLITE.md
Puis lance :
cd D:\07-Logiciels\20-FIN65\fin65_mobile
$env:PUB_CACHE = "D:\07-Logiciels\20-FIN65\.pub-cache"
flutter clean
Remove-Item -Recurse -Force .\.dart_tool -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force .\build -ErrorAction SilentlyContinue
Remove-Item -Force .\pubspec.lock -ErrorAction SilentlyContinue
flutter pub get
flutter run
Backend
Le backend reste la source officielle des données.
cd D:\07-Logiciels\20-FIN65\finance_app_backend
py -m uvicorn main:app --host 0.0.0.0 --port 8000 --reload
Dans l'app mobile, configurer l'URL :
http://IP_DU_PC:8000
Règles de synchronisation
- Les créations mobiles sont synchronisées plus tard.
- Les modifications/suppressions hors ligne ne sont pas encore activées pour éviter les conflits.
- Les soldes affichés hors ligne sont des soldes estimés quand il existe des opérations en attente.
V2.1 - Correctif locale FR
Correction de l'erreur Flutter :
LocaleDataException: Locale data has not been initialized
Le fichier lib/main.dart initialise maintenant les données de formatage :
WidgetsFlutterBinding.ensureInitialized();
await initializeDateFormatting('fr_FR', null);
V2.2 - Correctif sauvegarde hors ligne
Correction du problème observé lors de l'enregistrement d'une dépense avec le backend éteint.
Changements :
- le formulaire attend maintenant le rechargement SQLite local avant de fermer l'écran ;
- les erreurs de rechargement/synchronisation sont affichées au lieu de produire un écran noir ;
ErrorWidgetaffiche une erreur lisible si un widget Flutter échoue ;- validation plus stricte des comptes source/cible.
V2.3 - Boutons rapides
Ajout de raccourcis dans l'écran d'ajout rapide :
- dépenses rapides : Courses, Essence, Restaurant, Café, Transport, Santé, Abonnement, Retrait cash ;
- recettes rapides : Salaire, Remboursement, Prime, Vente ;
- transferts rapides : Épargne, Provision, Banque → Cash, Cash → Banque ;
- montants rapides : 10, 20, 50, 100, 200, 500, 1000.
Les boutons pré-remplissent le libellé et essaient d'associer automatiquement une catégorie existante quand le nom est proche.
V2.4.1 - Correctif build bouton fixe
Correction de compilation : le bouton Enregistrer fixe est maintenant déclaré dans l'écran principal d'ajout rapide, pas dans le composant interne des boutons rapides.
V2.5 - Page Synchronisation + verrouillage PIN
Ajouts :
- vraie page
Synchronisationavec statut backend, URL API, dernière synchro, file d'attente locale et bouton de synchronisation ; - accès à la page depuis l’icône nuage dans la barre du haut ;
- badge avec le nombre d’opérations en attente ;
- écran
Sécuritédans les paramètres ; - activation/changement/désactivation du PIN ;
- verrouillage automatique de l’app quand elle passe en arrière-plan ;
- demande du PIN au prochain retour dans l’app.
Note :
- Le PIN protège l’accès local à l’app.
- Si le backend est exposé sur Internet, il faudra aussi ajouter une vraie authentification serveur.
V2.6 - Déverrouillage par empreinte
Ajouts :
- dépendance Flutter
local_auth; - activation/désactivation de l'empreinte dans
Paramètres > Sécurité; - déverrouillage par empreinte sur l'écran de verrouillage ;
- le PIN reste toujours disponible en secours ;
- patch Android inclus dans
android_biometrics_patch.
Installation :
- Remplacer
lib,pubspec.yamletREADME_MOBILE_OFFLINE_SQLITE.md. - Lancer
flutter pub get. - Lancer le patch Android :
android_biometrics_patch\apply_android_biometrics_patch.bat - Relancer
flutter run.
Important :
- Active d’abord le PIN dans l’app.
- Ensuite seulement active l’empreinte.
- L’empreinte dépend des empreintes déjà configurées dans Android.