如何从另一个提供者内部的提供者接收数据
How to receive data from Provider inside another provider
我想知道如何从下面我的提供商 class Player
中名为 <Data>
的提供商 class 接收数据。正如您在我的示例中看到的那样,我有一个播放函数,它需要数据并等待一个字符串。数据位于名为 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();
}
}
您可以使用 ChangeNotifierProxyProvider
:
ChangeNotifierProxyProvider<Data, Player>(
create: (_) => Player(),
update: (_, data, player) => player..update(data),
)
在你的 Player
class:
class Player with ChangeNotifier {
String path;
String _url;
void update(Data data) {
_url = data.url;
}
...
}
我想知道如何从下面我的提供商 class Player
中名为 <Data>
的提供商 class 接收数据。正如您在我的示例中看到的那样,我有一个播放函数,它需要数据并等待一个字符串。数据位于名为 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();
}
}
您可以使用 ChangeNotifierProxyProvider
:
ChangeNotifierProxyProvider<Data, Player>(
create: (_) => Player(),
update: (_, data, player) => player..update(data),
)
在你的 Player
class:
class Player with ChangeNotifier {
String path;
String _url;
void update(Data data) {
_url = data.url;
}
...
}