2

我正在学习颤振,如果我得到一个聆听 dart only package aka riverpod 变化的例子,那将很容易理解。我在没有无状态或有状态小部件(基本上没有 Buildcontext)的类中使用 Provider。

所以我像这样将其他类的上下文传递给这个类,虽然它有效,但我觉得它不是正确的方法。

class SaveToLocal {
  final BuildContext context;
  SaveToLocal(this.context);

 foo(){
  //used context here
  var model = Provider.of<MyList>(context, listen: false);
  }
}

然后我遇到了riverpod,其中仅dart包不需要上下文,但我很困惑,因为我无法找到ProviderScope之类的东西。我也搜索了示例,但其中大多数都在flutter_riverpod上,而不是在riverpod上。
pub.dev 上的这个例子正在使用 FutureProvider 如果我只想从模型中获取怎么办

我的意思是模型

class MyList extends ChangeNotifier {
  List<String> _myList = [];
  List<String> get myList => _myList;
  
  foo(){
    //some task here
    notifyListeners();
  }

所以这里有问题
1.这是使用上下文的适当方式
2.有没有其他方法可以实现这一点 3.我可以
得到一个简单的例子,比如 CounterApp 显示读取和观看吗?

4

2 回答 2

1

对于第一个问题,答案是否定的:上下文不应该保存在某个外部类中,因为它可能会导致问题。

我将这些示例链接到您如何在应用程序中正确管理状态:

于 2020-11-29T19:07:59.493 回答
1

抱歉,我很困惑,我认为 Riverpod 仅适用于飞镖类,但它适用于非颤振应用程序(在阅读了 reso coder 的文章后说),因为我进一步尝试使用 flutter_riverpod 并在没有上下文的情况下使用(如随机先生所说)并且工作正常.

class SaveToLocal {
  final container = ProviderContainer();

  foo(){
    var model = container.read(listProvider);
 }
于 2020-11-30T17:31:45.110 回答