【问题标题】:How to receive data from Provider inside another provider如何从另一个提供者内部的提供者接收数据
【发布时间】:2020-04-08 07:49:37
【问题描述】:

我想知道如何在下面我的提供程序类Player 中从一个名为<Data> 的提供程序类接收数据。正如您在我的示例中看到的那样,我有一个播放函数,它需要数据并等待一个字符串。数据位于名为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();
  }

}

【问题讨论】:

    标签: flutter flutter-provider


    【解决方案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;
      }
    
    ...
    
    }
    

    【讨论】:

    • 谢谢你的回复,你能给我看一个我上面代码的例子吗?问候
    • 您只想从Data 类接收url 还是从Player 类修改此值?
    • 如果您向我展示两种方式,我将不胜感激,这样我就可以从中学习。 :) 但是对于这个例子,我只需要从Data 类接收url
    猜你喜欢
    • 2020-01-06
    • 2020-03-22
    • 2021-07-30
    • 2019-11-09
    • 2021-08-11
    • 2022-06-24
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    相关资源
    最近更新 更多