My app is logging out users since I added RevenueCat every time the user is quitting the app. This is not practical, because every time a user leaves the app, he needs to log in with his email and password.
Here is the code of my main.dart:
AppStore appStore = AppStore();
Future<void> main() async {
//await initialize();
WidgetsFlutterBinding.ensureInitialized();
await Upgrader.clearSavedSettings();
SystemChrome.setPreferredOrientations(
[DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]);
await Firebase.initializeApp();
await PurchaseAPI.init();
// Pass all uncaught errors from the framework to Crashlytics.
FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;
//appStore.toggleDarkMode(value: getBoolAsync(isDarkModeOnPref));
//if (isMobile) {
//await Firebase.initializeApp();
// MobileAds.instance.initialize();
// FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;
//}
runApp(const MyApp());
//endregion
}
class MyApp extends StatefulWidget {
const MyApp({Key key}) : super(key: key);
static void setLocale(BuildContext context, Locale locale) {
_MyAppState state = context.findAncestorStateOfType<_MyAppState>();
state.setLocale(locale);
}
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
Locale _locale;
void setLocale(Locale locale) {
setState(() {
_locale = locale;
});
}
@override
Widget build(BuildContext context) {
return Observer(
builder: (_) => MultiProvider(
providers: [
Provider<AuthenticationService>(
create: (_) => AuthenticationService(FirebaseAuth.instance),
),
StreamProvider(
create: (context) =>
context.read<AuthenticationService>().authStateChange,
),
ChangeNotifierProvider(
create: (context) => RevenueCatProvider(),
)
],
child: GetMaterialApp(
debugShowCheckedModeBanner: false,
locale: _locale,
supportedLocales: const [
Locale('fr', 'CA'),
Locale('en', 'US'),
Locale('cs', 'CZ'),
Locale('da', 'DK'),
Locale('de', 'DE'),
//Locale('de', 'CH'),
//Locale('en', 'CA'),
Locale('es', 'ES'),
Locale('es', 'MX'),
Locale('fi', 'FI'),
//Locale('fr', 'CH'),
//Locale('fr', 'FR'),
Locale('hu', 'HU'),
Locale('it', 'IT'),
Locale('kk', 'KZ'),
Locale('ko', 'KR'),
Locale('lv', 'LV'),
Locale('no', 'NO'),
Locale('pt', 'PT'),
Locale('ru', 'RU'),
Locale('sk', 'SK'),
Locale('sl', 'SI'),
Locale('sv', 'SE'),
],
localizationsDelegates: const [
DemoLocalization.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate
],
localeResolutionCallback: (deviceLocale, supportedLocales) {
for (var locale in supportedLocales) {
if (locale.languageCode == deviceLocale.languageCode &&
locale.countryCode == deviceLocale.countryCode) {
return deviceLocale;
}
}
return supportedLocales.first;
},
routes: routes(),
onGenerateRoute: RouteServices.generateRoute,
home: const AuthenticationWrapper(),
theme: !appStore.isDarkModeOn
? AppThemeData.lightTheme
: AppThemeData.darkTheme,
// builder: scrollBehaviour(),
),
));
}
}
class AuthenticationWrapper extends StatelessWidget {
const AuthenticationWrapper({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
final firebaseUser = context.watch<User>();
if (firebaseUser != null) {
purchaseAPIAndHomePage();
}
return CHSplashScreen();
}
Future<void> purchaseAPIAndHomePage() async {
await Purchases.logIn(FirebaseAuth.instance.currentUser.uid);
print(FirebaseAuth.instance.currentUser.uid);
print("Purchases app user ID main");
print(await Purchases.appUserID);
const CHHomePageScreen(index: 0,);
}
}
What change should I do to my code to fix the issue? Thank you