Integrim Flutter me pronësi të qartë të container-it.

ProviderScope mund të zotërojë një container ose të marrë një nga jashtë. API-të e Consumer e mbajnë qasjen te WidgetRef të përputhshme me kodin në stilin Riverpod.

Pronësia e ProviderScope

Pronësia e container-it ndryshon përgjegjësinë për lirimin.

Container i brendshëm

ProviderScope(child: ...) lirohet automatikisht

Container i jashtëm

ProviderScope(container: c, ...) kërkon që c.dispose() të thirret nga thirrësi

Scope i pakontrolluar

UncontrolledProviderScope kurrë nuk e liron container-in

Kurth i zakonshëm

Në testet e widget-it, mos harroni të lironi ProviderContainer-in e injektuar nga jashtë për të shmangur rrjedhje të timer-ave në pritje.

Variantet Consumer

Të gjitha opsionet ekspozojnë WidgetRef; zgjidhni sipas stilit të widget-it dhe nevojave të gjendjes lokale.

Rrënja e aplikacionit

Kur të përdoret secili

Consumer: local builder block for small reactive areas.
ConsumerWidget: stateless widget with build(context, ref).
ConsumerStatefulWidget: stateful widget with ref inside ConsumerState.

Shembull: ConsumerStatefulWidget

Përdorni ConsumerState kur ju duhen si WidgetRef ashtu edhe gjendja lokale e ndryshueshme e UI-së.

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),
        ),
      ],
    );
  }
}
Brendësia e Consumer planifikon rindërtimet pas kornizës, duke ulur problemet me setState gjatë ndërtimit.
Përdorni WidgetRef.watch vetëm për vlera që duhet të nxisin rindërtime.
Mbani efektet anësore jashtë build-it; përdorni callback-e dhe metodat invoke/refresh.

Hapat e ardhshëm

Testim

Vërtetoni ciklin e jetës së container-it, overrides dhe përditësimet asinkrone në testet unit dhe widget.

Hapni testimin

Referenca e API-së

Shihni nënshkrimet për ProviderScope, WidgetRef dhe metodat e container-it.

Hapni referencën e API-së