在Flutter中读取全局或静态方法中的提供程序

m2xkgtsf  于 2022-12-27  发布在  Flutter
关注(0)|答案(1)|浏览(139)

我有一个问题,关于从静态方法或全局方法内部阅读提供程序。我正在使用riverpod和awesome_notification包,我需要从通知的操作更改应用程序的状态,为此,包使用控制器类内部的静态方法。

class NotificationController{
  ...
  static Future<void> onActionReceivedMethod(ReceivedAction receivedAction) async {
    ...//some way to access a provider, to call methods on it
  }
  ...
}

如果有其他我不知道的方法,请告诉我。

我一直没能找到这样做的方法。

hgb9j2n6

hgb9j2n61#

您可以:
1.作为参数传递给ref函数。

static Future<void> onActionReceivedMethod(ReceivedAction receivedAction, Ref ref) async {
    final some = ref.read(someProvider);
  }

1.在构造函数中创建一个接受ref字段的类。

final notificationProvider = Provider((ref) => NotificationController(ref));

// or use tear-off
final notificationProvider = Provider(NotificationController.new);

class NotificationController{

  NotificationController(this._ref);

  final Ref _ref;
  
  static Future<void> onActionReceivedMethod(ReceivedAction receivedAction) async {
    final some = _ref.read(someProvider);
  }
  
}

无论哪种方式,您都应该始终可以访问'Ref'。

相关问题