Ujumuishaji wa Flutter na umiliki ulio wazi wa container.
ProviderScope inaweza kumiliki container au kupokea moja kutoka nje. API za Consumer zinaifanya WidgetRef ibaki sambamba na msimbo wa mtindo wa Riverpod.
Umiliki wa ProviderScope
Umiliki wa container hubadilisha uwajibikaji wa kuiyoa.
Container ya ndani
ProviderScope(child: ...) huondolewa kiotomatiki
Container ya nje
ProviderScope(container: c, ...) huhitaji c.dispose() kutoka kwa mwita
Eneo lisilodhibitiwa
UncontrolledProviderScope haiiondoi kamwe container
Mtego wa kawaida
Katika majaribio ya widget, kumbuka kuondoa ProviderContainer iliyoingizwa kutoka nje ili kuepuka uvujaji wa vipima muda vinavyosubiri.
Tofauti za Consumer
Chaguzi zote huonyesha WidgetRef; chagua kulingana na mtindo wa widget na mahitaji ya hali ya ndani.
Mzizi wa programu
Wakati wa kutumia kila moja
Consumer: local builder block for small reactive areas.
ConsumerWidget: stateless widget with build(context, ref).
ConsumerStatefulWidget: stateful widget with ref inside ConsumerState.
Mfano: ConsumerStatefulWidget
Tumia ConsumerState unapohitaji WidgetRef pamoja na hali ya UI ya ndani inayoweza kubadilika.
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),
),
],
);
}
}
Hatua zinazofuata
Majaribio
Thibitisha mzunguko wa maisha wa container, overrides, na masasisho ya asinkroni katika majaribio ya kitengo na widget.
Fungua majaribioRejeleo la API
Tazama saini za ProviderScope, WidgetRef, na mbinu za container.
Fungua rejeleo la API