స్పష్టమైన container యాజమాన్యంతో Flutter ఏకీకరణ.

ProviderScope ఒక container ను స్వంతంగా కలిగి ఉండవచ్చు లేదా బాహ్యంగా ఒకటి స్వీకరించవచ్చు. Consumer APIs, WidgetRef యాక్సెస్ ను Riverpod-శైలి కోడ్‌తో అనుకూలంగా ఉంచుతాయి.

ProviderScope యాజమాన్యం

Container యాజమాన్యం disposal బాధ్యతను మార్చుతుంది.

అంతర్గత container

ProviderScope(child: ...) స్వయంచాలకంగా dispose అవుతుంది

బాహ్య container

ProviderScope(container: c, ...) కోసం పిలిచే వ్యక్తి c.dispose() చేయాలి

అనియంత్రిత scope

UncontrolledProviderScope container ను ఎప్పుడూ dispose చేయదు

సాధారణ పొరపాటు

widget tests లో, పెండింగ్ timer leaks ను నివారించడానికి బాహ్యంగా inject చేసిన ProviderContainer ను dispose చేయడం మర్చిపోకండి.

Consumer వేరియంట్లు

అన్ని ఎంపికలు WidgetRef ను అందుబాటులో ఉంచుతాయి; widget శైలి మరియు స్థానిక state అవసరాల ప్రకారం ఎంచుకోండి.

యాప్ మూలం

ప్రతి దానిని ఎప్పుడు ఉపయోగించాలి

Consumer: చిన్న reactive ప్రాంతాల కోసం local builder block.
ConsumerWidget: build(context, ref) ఉన్న stateless widget.
ConsumerStatefulWidget: ConsumerState లో ref ఉన్న stateful widget.

ఉదాహరణ: ConsumerStatefulWidget

మీకు WidgetRef తో పాటు స్థానికంగా మారే UI state కూడా అవసరమైనప్పుడు ConsumerState ను వాడండి.

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),
        ),
      ],
    );
  }
}
Consumer లోపలి పని విధానం rebuilds ని post-frame వరకు షెడ్యూల్ చేస్తుంది, దాంతో setState సమయంలో build సమస్యలు తగ్గుతాయి.
rebuilds ని ట్రిగ్గర్ చేయాల్సిన విలువల కోసం మాత్రమే WidgetRef.watch ను వాడండి.
side effects ను build బయట ఉంచండి; callbacks మరియు invoke/refresh విధానాలను ఉపయోగించండి.

తదుపరి దశలు

పరీక్షలు

unit మరియు widget tests లో container lifecycle, overrides, మరియు async updates ని నిర్ధారించండి.

పరీక్షలను తెరవండి

API సూచన

ProviderScope, WidgetRef, మరియు container methods యొక్క signatures చూడండి.

API సూచన తెరవండి