I have found that after re-opening the App. The current user becomes null. It's not persistent. Here is my realm implementation:
void main() async {
// get app id from config
WidgetsFlutterBinding.ensureInitialized();
final realmConfig =
json.decode(await rootBundle.loadString('assets/config/realm.json'));
String appId = realmConfig['appId'];
Uri baseUrl = Uri.parse(realmConfig['baseUrl']);
final LoginData? storedLoginData = await LocalStorageService().currentLoginCred();
return runApp(MultiProvider(providers: [
ChangeNotifierProvider<AppServices>(
create: (_) => AppServices(appId, baseUrl)),
ProxyProvider<AppServices, Realm?>(
update: (context, app, previousRealm) {
if (app.currentUser != null) {
previousRealm?.close();
return initRealm(app.currentUser!);
}
return null;
},
dispose: (_, realm) => realm?.close(),
)
], child: App(storedLoginData)));
}
class App extends StatelessWidget {
final LoginData? storedLoginData;
const App(this.storedLoginData,{Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
final currentUser =
Provider.of<AppServices>(context, listen: false).currentUser;
return WillPopScope(
onWillPop: () async => false,
child: MaterialApp(
title: 'Target Eagle App',
theme: ThemeData.dark(),
initialRoute: currentUser != null ? '/' : '/welcomePage',
routes: {
'/': (context) => const HomePage(),
'/login': (context) => const LogIn(true)
}));
...
}
Steps to reproduce:
Login with valid credentials. Then it redirects to Home page.
Close the app
Re-open. Then it redirects to Welcome Page. Instead to Home page.
I want to persist my Realm User data even after re-opening the App. Could you please suggest me how should I achieve that?