Управление состоянием Flutter с провайдером с использованием нескольких экранов - PullRequest
0 голосов
/ 30 октября 2019

У меня есть две страницы, Page_A и Page_B в моем приложении. У меня есть два других класса, которые обновляют переменную _votes (по умолчанию = 0) в моем Privider Class, затем отображают эту переменную в Page_A, и это отлично работает, как и предполагалось.

Я пытаюсь получить доступ к этой переменной (_votes), которая теперь обновлена, чтобы сказать 23 на новой странице Page_B. Но когда когда-либо новая страница выводится на экран, кажется, что переменная сбрасывается на 0 вместо 23. Как мне добиться того, что я пытаюсь сделать.

1 Ответ

2 голосов
/ 30 октября 2019

Допустим, это ваш класс провайдера

class AppState with ChangeNotifier {
  int _votes = 0;

  getVotes() => _votes;

  setVotes(votes) {
    _votes = votes;
    notifyListeners();
 }}

// для доступа к

appState = Provider.of<AppState>(context);

// для получения текущего значения

appState.getVotes();

//чтобы установить значение

v = 23;
appState.setVotes(v);

, убедитесь, что корневой класс должен выглядеть следующим образом:

void main() {
   runApp(new MyApp());}


 class MyApp extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
       return ChangeNotifierProvider<AppState>(
         builder: (_) => AppState(),
         child: MaterialApp(
           home: HomePage(),
           debugShowCheckedModeBanner: false));
      }
   }
...