Flutteri integratsioon selge konteineri omandiga.

ProviderScope võib omada konteinerit või saada selle väliselt. Consumer API-d hoiavad WidgetRef'i ligipääsu Riverpodi-laadse koodiga ühilduvana.

ProviderScope'i omandus

Konteineri omandiõigus muudab dispose'i vastutust.

Sisemine konteiner

ProviderScope(child: ...) teeb dispose'i automaatselt

Väline konteiner

ProviderScope(container: c, ...) nõuab, et c.dispose() kutsuks välja kasutaja

Kontrollimata scope

UncontrolledProviderScope ei tee kunagi konteineri dispose'i

Tavaline lõks

Vidinates ehiatustes ära unusta välimiselt süstitud ProviderContainer'i dispose'ida, et vältida ootel taimerite lekkeid.

Consumeri variandid

Kõik variandid paljastavad WidgetRef'i; vali vidina stiili ja kohaliku state'i vajaduste järgi.

Rakenduse juur

Millal kumbagi kasutada

Consumer: kohalik builder-plokk väikeste reaktiivsete alade jaoks.
ConsumerWidget: state-vaba vidin build(context, ref)-ga.
ConsumerStatefulWidget: stateful vidin ref-iga ConsumerState sees.

Näide: ConsumerStatefulWidget

Kasuta ConsumerState'i, kui vajad nii WidgetRef'i kui ka kohalikku muudetavat UI-state'i.

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),
        ),
      ],
    );
  }
}
Consumeri sisemine loogika ajastab uuesti ehitamised post-frame'i peale, vähendades setState'i kasutamise probleeme build'i ajal.
Kasuta WidgetRef.watch ainult väärtuste jaoks, mis peaksid rebuildi käivitama.
Hoia kõrvalmõjud build'ist väljas; kasuta callback'e ning invoke/refresh meetodeid.

Järgmised sammud

Testimine

Kontrolli konteineri elutsüklit, override'e ja asünkroonseid uuendusi ühik- ja vidinatestides.

Ava Testing

API viide

Vaata ProviderScope'i, WidgetRef'i ja konteineri meetodite signatuure.

Ava API viide