ການລວມ Flutter ພ້ອມການຄອບຄອງ container ຢ່າງຊັດເຈນ.
ProviderScope ສາມາດເປັນເຈົ້າຂອງ container ຫຼືຮັບ container ຈາກພາຍນອກ. Consumer API ຮັກສາການເຂົ້າເຖິງ WidgetRef ໃຫ້ສອດຄ່ອງກັບໂຄດແບບ Riverpod.
ການຄອບຄອງ ProviderScope
ການຄອບຄອງ container ຈະປ່ຽນຄວາມຮັບຜິດຊອບໃນການ dispose.
Container ພາຍໃນ
ProviderScope(child: ...) ຈະ dispose ອັດຕະໂນມັດ
Container ພາຍນອກ
ProviderScope(container: c, ...) ຕ້ອງໃຫ້ຜູ້ເອີ້ນ c.dispose()
Scope ບໍ່ຖືກຄວບຄຸມ
UncontrolledProviderScope ບໍ່ເຄີຍ dispose container
ຈຸດທີ່ຜິດພາດບ່ອຍ
ໃນ widget tests ຈົ່ງຈື່ຈຳໃຫ້ dispose ProviderContainer ທີ່ຖືກສົ່ງມາຈາກພາຍນອກ ເພື່ອຫຼີກລ້ຽງ pending timer leaks.
ຮູບແບບ Consumer
ທຸກຕົວເລືອກຈະເປີດ WidgetRef; ເລືອກຕາມຮູບແບບ widget ແລະຄວາມຕ້ອງການ state ທ້ອງຖິ່ນ.
ຮາກຂອງແອັບ
ເມື່ອໃດຄວນໃຊ້ແຕ່ລະຢ່າງ
Consumer: ບລັອກ builder ທ້ອງຖິ່ນສຳລັບພື້ນທີ່ reactive ຂະໜາດນ້ອຍ.
ConsumerWidget: widget ແບບ stateless ພ້ອມ build(context, ref).
ConsumerStatefulWidget: widget ແບບ stateful ທີ່ມີ ref ຢູ່ໃນ ConsumerState.
ຕົວຢ່າງ: ConsumerStatefulWidget
ໃຊ້ ConsumerState ເມື່ອທ່ານຕ້ອງການທັງ WidgetRef ແລະ UI state ທີ່ປ່ຽນແປງໄດ້ໃນທ້ອງຖິ່ນ.
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),
),
],
);
}
}
ຂັ້ນຕອນຕໍ່ໄປ
ການທົດສອບ
ກວດສອບ lifecycle ຂອງ container, overrides ແລະ async updates ໃນ unit ແລະ widget tests.
ເປີດການທົດສອບAPI ອ້າງອີງ
ເບິ່ງ signatures ຂອງ ProviderScope, WidgetRef ແລະ methods ຂອງ container.
ເປີດ API ອ້າງອີງ