0

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

0 Answers0