Как получить данные от провайдера внутри другого провайдера - PullRequest
0 голосов
/ 08 апреля 2020

Мне интересно, как получить данные из класса провайдера с именем <Data> внутри моего класса провайдера Player ниже. Как вы можете видеть здесь в моем примере, у меня есть функция воспроизведения, которая нуждается в данных и ожидает строку. Данные находятся внутри строки поставщика с именем Provider.of<Data>(context, listen: false).url;

. Я получаю сообщение об ошибке из-за контекста. Нет контекста, и мой способ реализации Provider.of<Data>(context, listen: false).url; неверен. Так что мой вопрос: как правильно реализовать Provider.of<Data>(context, listen: false).url;? Как получить эти данные? Спасибо за вашу помощь!

class Player with ChangeNotifier {

  String path;
  final url = Provider.of<Data>(context, listen: false).url;

  void setPlayList(videosList) {
    url = path;
  }

  Future play() async {
   //my function
   await player.play(path);

  playerState = PlayerState.playing;
   notifyListeners();
  }

}

1 Ответ

1 голос
/ 08 апреля 2020

Вы можете использовать ChangeNotifierProxyProvider:

ChangeNotifierProxyProvider<Data, Player>(
          create: (_) => Player(),
          update: (_, data, player) => player..update(data),
        )

в вашем Player классе:

class Player with ChangeNotifier {

  String path;
  String _url;

  void update(Data data) {
    _url = data.url;
  }

...

}
...