如何从另一个提供程序内部的提供程序接收数据

时间:2020-04-08 07:49:37

标签: flutter flutter-provider

我想知道如何从下面我的提供程序类<Data>中名为Player的提供程序类接收数据。如您在此处的示例所示,我有一个play函数,该函数需要数据并等待String。数据位于名为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 个答案:

答案 0 :(得分:1)

您可以使用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;
  }

...

}