Как прочитать значение в методе createState StatefulWidget - PullRequest
0 голосов
/ 22 ноября 2018

Здравствуйте. Я хочу прочитать значение из SharedPreferences внутри createState StatefulWidget.

Я пытался добавить async после метода, но он не работает.Как правильно поступить?

class LoginScreen extends StatefulWidget {
  @override
  _LoginScreenState createState() {

    // check if user is logged. If logged then send user to dashboard else keep it here


    return new _LoginScreenState();
  }
}

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Не используйте createState для чтения значений, вы можете использовать initState или FutureBuilder, может быть.

class LoginScreen extends StatefulWidget {
    @override
    _LoginScreenState createState() => _LoginScreenState();
  }

  class _LoginScreenState extends State<LoginScreen> {
    String value;

    _readPreference() async {
      SharedPreferences prefs = await SharedPreferences.getInstance();
      //refresh your screen based on the current parameter
      setState(() {
        value = prefs.getString("your_value_key");
      });
    }

    @override
    void initState() {
      _readPreference();
      super.initState();
    }

    @override
    Widget build(BuildContext context) {
      return Container();
    }
  }
0 голосов
/ 22 ноября 2018

Ты не.

У вас не должно быть ничего внутри createState, кроме создания состояния.Если вы хотите выполнять такие проверки, делайте их внутри класса State:

class MyState extends State<MyWidget> {
  @override
  void didChangeDependencies() {
    // check if the user is logged
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...