Ton utilisateur français ouvre ton app, elle est en japonais — locale en Flutter
PlatformDispatcher.locale vs Localizations.localeOf — deux façons de récupérer la locale en Flutter, et l'ordre de supportedLocales qui tranche en silence.
Ton utilisateur français ouvre ton app. Elle est en japonais. Il n'a rien demandé.
En Flutter, deux façons de récupérer la locale, et tout le monde mélange les deux.

Les deux locales
PlatformDispatcher.instance.locale, c'est la langue brute du téléphone. Les réglages système. Elle se fiche de ce que ton app sait afficher.
Localizations.localeOf(context), c'est la langue que ton app utilise vraiment, après la résolution Flutter.
Le scénario surprise
Ton app supporte le japonais et l'anglais, pas le français. Le platform renvoie à ton user fr, sa vraie préférence. localeOf lui renvoie ja. 😯
Pourquoi le japonais et pas l'anglais ? Parce que par défaut, quand aucune langue ne matche, Flutter prend le premier de ta liste supportedLocales. Et dans la tienne, ja est avant en.
Personne ne décide « cet utilisateur aura du japonais ». C'est juste l'ordre de ta liste qui tranche, en silence.
// Device en "fr", app qui ne supporte pas le français
supportedLocales: [Locale('ja'), Locale('en')],
// fr non supporté -> ja (premier de la liste)
supportedLocales: [Locale('en'), Locale('ja')],
// fr non supporté -> en (déjà plus raisonnable)
À retenir
PlatformDispatcher.instance.locale= préférence système, jamais garantie affichable.Localizations.localeOf(context)= ce que l'app affiche réellement.- Le premier élément de
supportedLocalesest votre langue de repli : choisissez-le consciemment.