ਸਪੱਸ਼ਟ container ਮਾਲਕੀ ਨਾਲ Flutter ਇਕੀਕਰਨ।
ProviderScope ਇੱਕ container ਦਾ ਮਾਲਕ ਹੋ ਸਕਦਾ ਹੈ ਜਾਂ ਬਾਹਰੋਂ ਇੱਕ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦਾ ਹੈ। Consumer API WidgetRef ਪਹੁੰਚ ਨੂੰ Riverpod-ਸ਼ੈਲੀ ਕੋਡ ਨਾਲ ਸੁਸੰਗਤ ਰੱਖਦੀਆਂ ਹਨ।
ProviderScope ਮਾਲਕੀ
Container ਮਾਲਕੀ disposal ਜ਼ਿੰਮੇਵਾਰੀ ਨੂੰ ਬਦਲਦੀ ਹੈ।
ਅੰਦਰੂਨੀ container
ProviderScope(child: ...) ਆਪਣੇ ਆਪ dispose ਹੁੰਦਾ ਹੈ
ਬਾਹਰੀ container
ProviderScope(container: c, ...) ਲਈ caller ਨੂੰ c.dispose() ਕਰਨਾ ਪੈਂਦਾ ਹੈ
Uncontrolled scope
UncontrolledProviderScope container ਨੂੰ ਕਦੇ ਵੀ dispose ਨਹੀਂ ਕਰਦਾ
ਆਮ ਗਲਤੀ
widget tests ਵਿੱਚ, ਬਾਹਰੋਂ inject ਕੀਤੇ ProviderContainer ਨੂੰ dispose ਕਰਨਾ ਯਾਦ ਰੱਖੋ ਤਾਂ ਜੋ pending timer leaks ਤੋਂ ਬਚਿਆ ਜਾ ਸਕੇ।
Consumer ਕਿਸਮਾਂ
ਸਾਰੇ ਵਿਕਲਪ WidgetRef ਦਿਖਾਉਂਦੇ ਹਨ; widget ਸ਼ੈਲੀ ਅਤੇ ਸਥਾਨਕ state ਦੀ ਲੋੜ ਅਨੁਸਾਰ ਚੁਣੋ।
ਐਪ root
ਹਰ ਇੱਕ ਕਦੋਂ ਵਰਤਣਾ ਹੈ
Consumer: ਛੋਟੇ reactive ਖੇਤਰਾਂ ਲਈ ਸਥਾਨਕ builder block.
ConsumerWidget: build(context, ref) ਵਾਲਾ stateless widget.
ConsumerStatefulWidget: ConsumerState ਅੰਦਰ ref ਵਾਲਾ stateful widget.
ਉਦਾਹਰਨ: ConsumerStatefulWidget
ਜਦੋਂ ਤੁਹਾਨੂੰ WidgetRef ਅਤੇ ਸਥਾਨਕ mutable UI state ਦੋਵੇਂ ਚਾਹੀਦੇ ਹੋਣ, ConsumerState ਵਰਤੋ।
class HomePage extends ConsumerStatefulWidget {
const HomePage({super.key});
@override
ConsumerState<HomePage> createState() => _HomePageState();
}
class _HomePageState extends ConsumerState<HomePage> {
bool expanded = false;
@override
Widget build(BuildContext context) {
final user = ref.watch(currentUser);
return Column(
children: [
Text('$user'),
Switch(
value: expanded,
onChanged: (v) => setState(() => expanded = v),
),
],
);
}
}
ਅਗਲੇ ਕਦਮ
ਟੈਸਟਿੰਗ
container lifecycle, overrides, ਅਤੇ async updates ਨੂੰ unit ਅਤੇ widget tests ਵਿੱਚ ਪਰਖੋ।
ਟੈਸਟਿੰਗ ਖੋਲ੍ਹੋ