import 'dart:async'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:niogu_ecommerce_v1/core/models/tenant_model.dart'; import 'package:niogu_ecommerce_v1/features/home/domain/entities/home.dart'; import 'package:niogu_ecommerce_v1/features/home/presentation/providers/home_provider.dart'; class ConfigurationController extends AutoDisposeAsyncNotifier { @override FutureOr build() => _fetchConfiguration(); Future _fetchConfiguration() async { final homeRepository = ref.read(homeRepositoryProvider); return await homeRepository.fetchConfiguration(); } Future refresh() async { ref.invalidateSelf(); await future; } } class HomeController extends AutoDisposeAsyncNotifier { @override FutureOr build() => _fetchHome(); Future _fetchHome() async { final homeRepository = ref.read(homeRepositoryProvider); return await homeRepository.fetchHome(); } Future refresh() async { ref.invalidateSelf(); await future; } } class ProductByNameController extends AutoDisposeFamilyAsyncNotifier, String> { @override FutureOr> build(String name) => _fetchProductByName(name); Future> _fetchProductByName(String name) async { final homeRepository = ref.read(homeRepositoryProvider); return await homeRepository.fetchProductByName(name); } Future refresh() async { ref.invalidateSelf(); await future; } } class ProductCategoryController extends AutoDisposeFamilyAsyncNotifier, String> { @override FutureOr> build(String categoryId) => _fetchProductBestSellers(categoryId); Future> _fetchProductBestSellers(String categoryId) async { final homeRepository = ref.read(homeRepositoryProvider); return await homeRepository.fetchProductCategories(categoryId); } Future refresh() async { ref.invalidateSelf(); await future; } }