Integrasyon ng Flutter na may malinaw na pagmamay-ari ng container.

Maaaring angkinin ng ProviderScope ang isang container o tumanggap ng isa mula sa labas. Pinananatiling tugma ng mga API ng Consumer ang access sa WidgetRef sa kodigong istilong Riverpod.

Pagmamay-ari ng ProviderScope

Binabago ng pagmamay-ari ng container ang pananagutan sa disposal.

Panloob na container

ProviderScope(child: ...) ay awtomatikong nagdi-dispose

Panlabas na container

ProviderScope(container: c, ...) ay nangangailangang ang tumatawag ang mag-dispose sa c

Hindi kontroladong scope

Hindi kailanman dini-dispose ng UncontrolledProviderScope ang container

Karaniwang patibong

Sa mga widget test, tandaan na i-dispose ang ProviderContainer na ininject mula sa labas upang maiwasan ang mga leak ng nakabinbing timer.

Mga Variant ng Consumer

Ipinapakita ng lahat ng opsyon ang WidgetRef; pumili batay sa estilo ng widget at sa pangangailangan ng lokal na estado.

Root ng app

Kailan gagamitin ang bawat isa

Consumer: lokal na builder block para sa maliliit na reactive na bahagi.
ConsumerWidget: stateless widget na may build(context, ref).
ConsumerStatefulWidget: stateful widget na may ref sa loob ng ConsumerState.

Halimbawa: ConsumerStatefulWidget

Gamitin ang ConsumerState kapag kailangan mo ang WidgetRef at lokal na nababagong 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),
        ),
      ],
    );
  }
}
Iniuutos ng loob ng Consumer ang mga rebuild na mangyari pagkatapos ng frame, kaya nababawasan ang mga isyung setState habang nagba-build.
Gamitin ang WidgetRef.watch lamang para sa mga halagang dapat mag-trigger ng rebuild.
Panatilihing nasa labas ng build ang mga side effect; gumamit ng callbacks at mga method na invoke/refresh.

Mga Susunod na Hakbang

Pagsubok

Suriin ang lifecycle ng container, mga override, at async na mga update sa mga unit at widget test.

Buksan ang Pagsubok

Sanggunian ng API

Tingnan ang mga signature para sa ProviderScope, WidgetRef, at mga method ng container.

Buksan ang Sanggunian ng API