Search code examples
flutterdartflutter-getx

Flutter get_storage is not saving data


I am trying to save the theme of my app using bool variable in get storage. but whenever I restart or open the app after closing the app, the variable get null.

 void changeTheme() {
    final box = GetStorage();
    box.writeIfNull('isDark', false);
    bool isDark = box.read('isDark');
    isDark
        ? Get.changeTheme(QRCodeTheme.lightThemeData)
        : Get.changeTheme(QRCodeTheme.darkThemeData);
    box.write('isDark', !isDark);
  }
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  Prefs.init();
  runApp(QRCodeScannerApp());
}

class QRCodeScannerApp extends StatefulWidget {
  QRCodeScannerApp({Key? key}) : super(key: key);

  @override
  State<QRCodeScannerApp> createState() => _QRCodeScannerAppState();
}

class _QRCodeScannerAppState extends State<QRCodeScannerApp> {
  bool darkMode = false;
  @override
  void initState() {
    final box = GetStorage();
    box.writeIfNull('isDark', false);
    darkMode = box.read('isDark');
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      debugShowCheckedModeBanner: false,
      theme:
          darkMode ? QRCodeTheme.darkThemeData : QRCodeTheme.lightThemeData,
      initialRoute: AppRoutes.home,
      getPages: [
        GetPage(
          name: AppRoutes.home,
          page: () => HomePage(),
        ),
      ],
    );
  }
}

What am I missing? Thanks in advance!


Solution

  • In your void main please enter below code

    await GetStorage.init();
    

    You should add await keyword

    P.S :- In your case you use to write await Prefs.init()