Do not modify global defaultLocale #3013
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Prior to this change we were telling people to modify the global
Intl.defaultLocale
when their customLocalizations
for a new locale are loaded. That's a bad idea because Flutter allows that different parts of the same app use different localizations. For example, let's say your global locale isde
. Now you have one screen in the app that uses a locale ofen
via theLocalizations.override
widget. When the first locale is loaded,Intl.defaultLocale
is set tode
and everything in your app appears in German as expected. When you navigate to the screen that has theLocalizations.override
, theen
local is loaded andIntl.defaultLocale
is set toen
forcing the entire (!) app to English, even the parts outside of theLocalizations.override
.This change no longer recommends the usage of
Intl.defaultLocale
and instead holds on to the locale applicable to the current Localizations instance in an instance variable.Fixes flutter/flutter#40353.