Container-ийн тодорхой эзэмшилтэй Flutter интеграц.
ProviderScope нь container-ийг өөрөө эзэмшиж болно эсвэл гаднаас хүлээн авч болно. Consumer API-үүд WidgetRef-д хандах боломжийг Riverpod маягийн кодтой нийцтэй байлгадаг.
ProviderScope-ийн эзэмшил
Container-ийн эзэмшил нь dispose хийх хариуцлагыг өөрчилнө.
Дотоод container
ProviderScope(child: ...) автоматаар dispose хийгдэнэ
Гадаад container
ProviderScope(container: c, ...) нь дуудсан талд c.dispose() шаардана
Хяналтгүй scope
UncontrolledProviderScope нь container-ийг хэзээ ч dispose хийхгүй
Түгээмэл алдаа
Widget test-үүдэд гаднаас оруулсан ProviderContainer-ийг заавал dispose хийж, хүлээгдэж буй timer leak-үүдээс сэргийлээрэй.
Consumer-ийн хувилбарууд
Бүх сонголт WidgetRef-ийг ил гаргана; widget-ийн хэв маяг болон орон нутгийн state-ийн хэрэгцээгээр сонгоорой.
Програмын үндэс
Альийг нь хэзээ ашиглах вэ
Consumer: жижиг reactive хэсгүүдэд зориулсан орон нутгийн builder блок.
ConsumerWidget: build(context, ref) бүхий stateless widget.
ConsumerStatefulWidget: ConsumerState дотор ref-тэй stateful widget.
Жишээ: ConsumerStatefulWidget
WidgetRef болон орон нутгийн өөрчлөгдөх 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, override-ууд, async шинэчлэлүүдийг unit болон widget test-үүдээр шалгаарай.
Тестийг нээхAPI лавлах
ProviderScope, WidgetRef болон container-ийн аргуудын сигнатурыг үзнэ үү.
API лавлахыг нээх