Flutter sharedpreferences boolean всегда возвращать true - PullRequest
0 голосов
/ 27 марта 2020

Я занимаюсь разработкой приложения для флаттера. Приложение имеет встроенный экран. Я хочу сохранить, что пользователь сначала открывает. Я использую общие преференции для этого. Ниже кодов всегда открывайте OnBoardingScreen. В чем моя вина? Пожалуйста, помогите мне.

метод сохранения bool

saveBool(bool isOk) async { 
  final prefs = await SharedPreferences.getInstance();
  prefs.setBool('firstOpen', isOk);
}

метод проверки bool

 checkFirstOpen() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  bool checkValue = prefs.containsKey('firstOpen');
  return checkValue;
}
}

И здесь я решаю на маршрут

main.dart

home: checkFirstOpen() == true ? MyHomePage() : OnboardingScreen());

Я сохраняю bool в setState.

onTap: (){
                var route = new MaterialPageRoute(
                          builder: (BuildContext context) =>
                              new MyHomePage(),
                        );
                        Navigator.of(context).push(route);
                        setState(() {
                          saveBool(true);
                        });
              },

1 Ответ

0 голосов
/ 27 марта 2020

Вы просто проверяете, есть ли у вас ключ или нет. Удалите эту строку

prefs.containsKey("firstOpen");

Вместо этого получите доступ к значению, используя

prefs.getBool("firstOpen") ?? true
...