पढ्ने बाटोहरू: watch, read र listen.

Provider ले synchronous state दिन्छ। AsyncProvider ले AsyncValue फिर्ता गर्छ र कडा lifecycle handling सँग Future र Stream दिन सक्छ।

Provider प्रकारहरू

data source र update frequency अनुसार provider type छान्नुहोस्।

Provider<T>

Synchronous values र local derived state

AsyncProvider<T>

Future/Stream-चालित state को रूपमा AsyncValue<T>

provider.future

Provider<Future<T>> expose गर्ने selector

सुझाव

state network वा stream बाट आउँछ भने, पहिले AsyncProvider छान्नुहोस्। Provider लाई pure synchronous logic का लागि राख्नुहोस्।

पढ्ने API matrix

build paths मा watch, one-shot access का लागि read, र side effects का लागि listen प्रयोग गर्नुहोस्।

सबैभन्दा सामान्य

watch / read / listen

ref.watch(provider)  : subscribe and rebuild when value changes.
ref.read(provider)   : read current snapshot without subscribing.
container.listen(...) : callback-driven updates; optional fireImmediately.

AsyncProvider सँग Future र Stream

एउटा AsyncProvider ले Future फिर्ता दिन सक्छ वा ref.emit(stream) मार्फत Stream बाँध्न सक्छ।

final currentUser = AsyncProvider<User>((ref) async {
  final api = ref.watch(apiProvider);
  return api.me();
});

final liveUser = AsyncProvider<User>((ref) {
  final stream = ref.watch(apiProvider).live();
  ref.emit(stream);
  return const User(name: 'Loading...');
}, autoDispose: true, autoDisposeDelay: const Duration(milliseconds: 250));

// Await as Future
final user = await ref.watch(currentUser.future);
ref.emit(stream) ले rebuild, invalidate र dispose हुँदा अघिल्लो subscription रद्द गर्छ।
AsyncValue एउटा sealed class हो: AsyncLoading / AsyncData / AsyncError।
switch सँगको pattern matching ले loading/error UI लाई स्पष्ट राख्छ।

अर्को कदम

Mutations

write operations लाई provider methods मा सार्नुहोस् र ref.invoke मार्फत चलाउनुहोस्।

Flutter API खोल्नुहोस्

Flutter API

Consumer, ConsumerWidget, र ConsumerStatefulWidget बीच छान्नुहोस्.

API Reference खोल्नुहोस्