تفاوت این سه موردی که در عنوان گفته شده چیه و چه ربطی به همدیگه دارن؟
درود
BlocBuilder:
با این ویجت شما براساس state ـی که emit شده تصمیم میگیرید که چه ویجتی build کنید.
BlocListener:
در صورتی که در ازای یک state نخواهید اقدامی انجام بدید که منجر به ساخت یک ویجت بشه مثلا نشون دادن snackBar و.. از این ویجت استفاده میکنید.
BlocConsumer:
اگر شرایط کدتون طوری باشه که به ازای برخی stateها بخواهید ویجت build کنید و به ازای بعضی شون اقدامات دیگه (listen کنید) از BlocConsumer استفاده میشه. دو پارامتر اختیاری listenWhen و buildWhen داره که میتونید مشخص کنید کدوم state برای کدوم هدف هست. به طور خلاصه این ویجت ترکیب دو ویجت بالاتر هست.
BlocProvider:
با استفاده از این ویجت شما یک نمونه از blocتون میسازید. تا زمانی که به وسیله BlocProvider اون bloc مربوطه رو در widget tree قرار ندید، اون bloc شناخته نمیشه و خطا دریافت میکنید.