Ad

Change Flutter Localizations With Bloc State Managment Problem

I would like to change application language every time that someone decide to change application language without restarting app. Everything is working using BLoC.

The problem I have I don't really understand one thing. If I pass to MaterialApp property titleTodosLocalizations.of(context).translate("appTitle") it throws an error:

The method 'translate' was called on null.
Receiver: null
Tried calling: translate("appTitle")

enter image description here

But when I comment this line and pass the same thing to onGenerateTitle property using context everything is working without problem.

enter image description here

Can someone answer me why this happening or I might don't understand how to use this property (title) in this case.

Ad

Answer

When you call onGenerateTitle: (BuildContext context) => TodosLocalizations.of(context).title, it uses a new BuildContext, which already contains the LocalizedDelagate(), so it can be called with TodosLocalizations.of(context).

When you use it directly without onGenerateTitle within the same build method, you refer to an instance of context before the LocalizedDelagate() was created, so TodosLocalizations.of(context) doesn't return anything.

Ad
source: stackoverflow.com
Ad