Добрый день, есть пару вопросов по поводу Flutter, в частности Provider. С какого то момента перешёл на flutter из c#. При изучение и работы со state остановился на provider, не понял концепцию BLoC (пытался, но не понравилось), которую использует некоторые ребята на проекте. Можете объяснить в чём же разница? BLoC же вытекает из того же Provider. Просто концепция Provider, мне очень понятна и легка чем BLoC и другие аналоги.
Второй вопрос, который только не давно возник это, в чём разница использование ValueNotifier и обычного ChangeNotifier?
Вот как например выглядит в сервис который пишу
class ServiceA extends ChangeNotifier{
List<Order> orders = [];
Future<void> getOrders() async{
//запрос и обработка
orders = data.list();
notifyListeners();
}
}
// и после можно получить данные в виджетах
// вот так: serviceA.orders;
По идеи можно реализовать по другому
class ServiceB extends ValueNotifier<ServiceBValue>{
ServiceB() : super(const ServiceBValue());
Future<void> getOrders() async{
//запрос и обработка
value = value.copyWith(orders:data.list());
}
}
class ServiceBValue{
final List<Order> orders = [];
const ServiceBValue({this.orders = []});
ServiceBValue copyWith({List<Order>? orders}){
return ServiceBValue(
orders: orders ?? this.orders
);
}
}
// и после можно получить данные в виджетах
// вот так: serviceA.value.orders;
Последний метод реализации увидел в библиотеке video_player
Там выглядит контроллер так:
VideoPlayerController extends ValueNotifier<VideoPlayerValue> {
...
...
...
}
В чём разница? В чём подвох? Ни как не могу найти нормального ответа)
Заранее спасибо)