Как получить доступ к провайдеру в классе модели

У меня есть класс, который не является виджетом, поэтому у него нет контекста. Так есть ли способ получить доступ к классу с ChangeNotifier в этом классе модели.

Класс модели

class MyRouteObserver extends RouteObserver<PageRoute<dynamic>> {
@override
  void didPop(Route<dynamic> route, Route<dynamic> previousRoute) {

    
    Provider.of<MyCass>(context, listen: false).restore();  // How I can do this ? as I dont have context here

    super.didPop(route, previousRoute);
    if (previousRoute is PageRoute && route is PageRoute) {
      _sendScreenView(previousRoute);
    }
  }
}

Мой класс


class MyClass with ChangeNotifier {

  void restore() {
    .. Some logic
  }
}

person Not yet decided    schedule 09.04.2021    source источник


Ответы (1)


Добавьте контекст в свой класс

final BuildContext context;

затем добавьте его в конструктор

const MyRouteObserver(this.context);

поэтому вы можете передать контекст сборки в свой класс из класса виджета

person Anushka    schedule 09.04.2021
comment
Не держитесь за контекст. Они все разные, даже если находятся в одном виджете. Вам всегда нужен текущий контекст. - person Randal Schwartz; 10.04.2021