Force localeResolutionCallback upon language change - flutter

I'm confronted with an interesting problem. I am using "localeResolutionCallback" to set the locale on load and to detect when the user changes the language on the device. However i also want to be able to bypass it so the user can choose a separate language from the one his device is set to.
This seems to be impossible because "localeResolutionCallback" if i read the docs properly only works on load and when a device language was changed.
Does anyone know how to force it to trigger this function? I do not want to use the "locale" key of material app (which works) because i would have 2 similar operations that are conflicting and i absolutely need "localeResolutionCallback" for detection so that one wins.
Any ideas? Thanks
PS: i am indeed using a listener to rebuild materialapp but like i said it doesn't trigger "localeResolutionCallback "

You should use "locale" as you mentionned and then just return null if it's during a device language change. Do the opposite if it's a manual language set.

Related

RestorableBool vs bool in Flutter

According to documentation, RestorableBool class is a RestorableProperty that knows how to store and restore a bool. One example of RestorableBool is given by flutter itself in the flutter gallery project.
The same result can be achieved by using simple boolean. Click here to get the code of same screen using simple bool.
Is there any special benefits for RestorableBool over usual bool or is there any special context at which we have to use RestorableBool?
Anyone to help?Thanks in advance.
Mobile operating systems fool you into thinking all the apps you have open are actually running. But they are not. The topmost is running, all others are killed. Their last screenshot is kept to uphold the illusion of being able to hold multiple apps open.
When you "switch apps", what happens is that the app that wasn't in the foreground is opened and it's state is restored from memory.
If you don't do anything, your app cannot handle this and will just start as if it was started from scratch.
In Flutter, the Restoration Manager can help you store your state and restore your state. Other options are available, I think hydrated_bloc is probably useful if you are working with bloc patterns.
The example in your code doesn't do the same thing, well it does in your code, but it wouldn't in all cases.
The difference is that RestorableBool is reset to it's initial state, even if it is already in that state, meanwhile your code flips the bool to the opposite value.

Flutter: Localization from API call

I wish to localize a Flutter application where locales are fetched by an API call, given the requested language.
I was hoping to be able to use the Intl package or something similar, but I am not sure this is possible without the .arb files.
Any ideas on how to accomplish this without reinventing the wheel?
(Having the localizations stored locally is not an option)
Down below, you can see a class which is converted to a singleton pattern. You can use any service locator package. It will be the same thing.
Now you can call this class in your main function, default set to EN.
Now let's say, you want to support SPANISH and not want to use .arb files
Now you can call google translate and replace values with the existing one. for every variable. I hope this helps.
Use https://pub.dev/packages/localizely_sdk package, it provides what you want to achieve
Turns out easy_localization has the functionality described. Simply creating a custom HttpAssetLoader and passing it to the easy_localization initialization method works out of the box, and provides device language detection, and application rebuild on locale change as intended.

Drag and Drop Behavior on Chrome DevTools Protocol

I am trying to write a tool that open's a website and interacts with and triggers the drag/drop behavior. I am seeing Input.dragIntercepted, Input.dispatchDragEvent functions in the documentation. But when I use these functions, I am getting a ... is not a function error. Probably, I am not using them in a proper way.
How can I use these functions to trigger drag and drop behavior of the web application? I did not find any example that shows usage of these functions.
First of all, Input.dragIntercepted really isn't a function. It's an event that will be fired, but only if you enable it, using Input.setInterceptDrags with enable set as true.
This is documented both here and here.

What should I use for i18n in Flutter: S.of(context) or S.current?

I'm using the i18n plugin for Flutter (I believe it's this one) that comes with Android Studio.
And in every example I see it says to use S.of(context).my_string to get the Strings but it always returns null.
If I use S.current.my_string, it seems to work.
So is S.current the right way to do it and every doc/tutorial out there is wrong, are they the same or what?
What I'm basically asking here, is what is the difference between them.
Seems like S.of(context) is initially available way to access localised string.
But sometimes you need to use it without Build Context (in ViewModel, for example). So S.current was added for these cases.
More info here

make the language of my IPHONE app change from the app settings without changing the language of the device

I want to make the language changeable from the application settings. For that I made a settings.bundle and i forced the langauge using this code How to force NSLocalizedString to use a specific language , I also put the UIApplicationExitsOnSuspend to YES to make my app reload every time it goes to the background.
It partially worked for me but I have 2 problems :
- The splash screen (which is localized) is not changing with this method.
- I must enter/goBack twice to make the language change effective on the application Views an this only on the OS 4 and higher.
Has anyone a solution for that?
You need to create you own translation framework for that ! Sorry !
Unfortunately there's no built-in way. What would be probably easiest would be integrate service like GetLocalization.com, so that your app would download language file via API (then it's easy to add new languages and translations even app is already released). Then what you need is just simple loader that loads that language file to memory and function that replaces the original string with translated one in run-time. You can calculate hash for original string so it's fast to search them, good algorithm for this is Peter Weinberger's hashPJW.
The trick to use specific language by selecting it from the app is to force the NSLocalizedString to use specific bundle depending on the selected language ,
here is the post i have written for this http://learning-ios.blogspot.com/2011/04/advance-localization-in-ios-apps.html
and here is the code of one sample app https://github.com/object2dot0/Advance-Localization-in-ios-apps