Flutter/Riverpod с сервисом и репозиторием — как

Я создаю свое первое приложение Flutter на основе RiverPod и пытаюсь понять, как RiverPod работает с шаблоном службы и репозитория.

У меня есть класс репозитория, который отвечает за обработку взаимодействий с конкретным API хранилища, в этом случае это может быть FireStore или Hive в соответствии с пользовательской конфигурацией.

Существует отдельный класс обслуживания, который выступает в качестве логического уровня для сохранения данных, например...

final goalRepositoryProvider = Provider<FsGoalRepository>((ref)=> FsGoalRepository());

class GdGoalService {

  Future<GdGoal> add(GdGoal aNewGoal) async {
    return ref.watch(goalRepositoryProvider).add(aNewGoal);
  }
   ...
}

Проблема в том, что я не могу найти способ установить значение ref в классе обслуживания. По сути, я пытаюсь использовать RiverPod для зависимой инъекции класса репозитория в службу.

Является ли передача «ref» в качестве параметра службе законным подходом?

final goalServiceProvider = Provider<GdGoalService >((ref) {   
  return GdGoalService (ref); 
});

Предложения?

Шаблоны Angular PrimeNg
Шаблоны Angular PrimeNg
Как привнести проверку типов в наши шаблоны Angular, использующие компоненты библиотеки PrimeNg, и настроить их отображение с помощью встроенной...
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Если вы веб-разработчик (или хотите им стать), то вы наверняка гик и вам нравятся "Звездные войны". А как бы вы хотели, чтобы фоном для вашего...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Начала с розового дизайна
Начала с розового дизайна
Pink Design - это система дизайна Appwrite с открытым исходным кодом для создания последовательных и многократно используемых пользовательских...
Шлюз в PHP
Шлюз в PHP
API-шлюз (AG) - это сервер, который действует как единая точка входа для набора микросервисов.
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
0
0
124
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Да, передача ref в ваш сервисный код из оболочки провайдера является законной. Поставщики будут получать ref друг от друга и, в конечном счете, от ref.watch или ref.read потребительского виджета, который связывает их всех вместе с ProviderScope, где все данные по существу «живут».

Другие вопросы по теме