స్పష్టమైన 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-during-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 సూచన తెరవండి