التكامل مع Flutter مع ملكية الحاوية الصريحة.
ProviderScope يمكن أن يمتلك حاوية أو يستلم واحدة خارجيًا. تتيح واجهات برمجة التطبيقات للمستهلك الحفاظ على توافق الوصول إلى WidgetRef مع كود Riverpod.
نطاق المورد الملكية
ملكية الحاوية، مسؤولية التخلص.
الحاوية الداخلية
ProviderScope(طفل: ...) يتم التخلص منه تلقائيًا
الحاوية الخارجية
ProviderScope(حاوية: c، ...) يتطلب c.dispose() من قبل المستدعي
نطاق غير مُتحكم فيه
النطاق غير الخاضع للرقابة لـ Provider لا يقوم بإلغاء تجميع الحاوية
المفترق الشائع
في اختبارات المكون، يرجى تذكر التخلص من حاوية Provider المُدخلة خارجيًا لتجنب تسربات مؤقت.
خيارات المستهلك
All الخيارات تعرض WidgetRef؛ اختر حسب نمط المكون و احتياجات الحالة المحلية.
جذر التطبيق
متى يتم استخدام كل منها
المستهلك: كتلة بناء محلية للمناطق الصغيرة التفاعلية.
ConsumerWidget: مكون غير حالي مع بناء(السياق، مرجع).
ConsumerStatefulWidget: مكون حالي مع مرجع داخل ConsumerState.
مثال: ConsumerStatefulWidget
استخدم ConsumerState عندما تحتاج إلى كل من WidgetRef وحالة واجهة المستخدم المحلية القابلة للتعديل.
class class 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),
),
],
);
}
}
الخطوات التالية
Provider
التحقق من دورة حياة الحاوية، والإعدادات المخصصة، والتحديثات غير المتزامنة في اختبارات الوحدة والمكونات.
قيد الاختبارStateProvider
راجع توقيعات طرق ProviderScope و WidgetRef والحاوية.
مرجع واجهة برمجة التطبيقات المفتوحة