In my flutter application I have implemented a an onboarding view. As it should load only once, I have used shared preferences to store an integer to indicate that onboarding is already shown. When I run the application in debug mode everything works perfectly. But when I build the release version of it, it doesn’t work.
And also my application uses firebase mobile authentication. I am mentioning this since it may be a reason as well.
The code:
case InitializeEvent:
SharedPreferences prefs = await SharedPreferences.getInstance();
int initScreen = prefs.getInt(SharedPrefUtil.INIT_SCREEN);
await prefs.setInt(SharedPrefUtil.INIT_SCREEN, 1);
if (initScreen == 1) {
add(CheckAppConfigEvent());
} else {
yield state.clone(page: RootState.ONBOARDING_PAGE);
}
yield state.clone(loading: false);
break;
So in the above code, if I comment initializing shared pref, reading and writing lines and set true or false in if else statement everything works fine in release build. That’s why I think the issue is in initializing shared preferences.
And also I have given permission only for internet. Am I missing any permission in AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
flutter build apk --no-shrink
it works fine in the release build as well. So if there are any solutions ot apply code shrinkage that would be appreciable. – Crocus