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),
        ),
      ],
    );
  }
}
Mambo ya ndani ya Consumer hupanga uundaji upya baada ya fremu, kupunguza matatizo ya setState wakati wa build.
Tumia WidgetRef.watch tu kwa thamani zinazopaswa kuanzisha uundaji upya.
Weka athari za pembeni nje ya build; tumia callbacks na mbinu za invoke/refresh.

Hatua zinazofuata

Majaribio

Thibitisha mzunguko wa maisha wa container, overrides, na masasisho ya asinkroni katika majaribio ya kitengo na widget.

Fungua majaribio

Rejeleo la API

Tazama saini za ProviderScope, WidgetRef, na mbinu za container.

Fungua rejeleo la API