Как воспользоваться преимуществами интерфейсов при использовании провайдеров во flutter?

#flutter #dart #interface #flutter-change-notifier

Вопрос:

Допустим, у меня есть 3 поставщика идентификаторов изменений «Auth1″,»Auth2″,»Auth3». Я хочу,чтобы все они реализовали login (), signup (), IsAuthenticated().

Так что я могу заменить одного провайдера другим, когда захочу.

 //Interface
class IAuth {
 Future<void> signUp(String email, String password)=>throw UnimplementedError();
 Future<void> login(String email, String password) => throw UnimplementedError();
 Future<bool> isAuthenticted() => throw UnimplementedError();
 void logout() => throw UnimplementedError();
}

 

Я могу определить

класс Auth1 расширяет определитель изменений, реализует IAuth { … }

класс Auth2 расширяет определитель изменений, реализует IAuth { … }

класс Auth3 расширяет определитель изменений, реализует IAuth { … }

Но как я могу предоставить поставщиков услуг таким образом, чтобы я мог заменить их без каких-либо проблем в будущем?

ChangeNotifierProvider.значение(значение: Auth1())

Через некоторое время я, возможно, захочу заменить Auth1 на Auth2, а также я хочу знать, является ли это тривиальным вопросом

Комментарии:

1. Почему вы хотите заменить поставщиков услуг?

2. Предположим, допустим, у меня есть различные поставщики аутентификации, один из которых использует JWT, другой использует какой-то другой механизм аутентификации. Я хотел, чтобы мой провайдер работал независимо от того, какого поставщика аутентификации я использую.

Ответ №1:

Это может быть проще с помощью ProviderScope в RiverPod. (RiverPod был написан автором Provider для решения нового круга проблем.)