স্পষ্ট container মালিকানাসহ Flutter ইন্টিগ্রেশন।

ProviderScope একটি container-এর মালিক হতে পারে বা বাইরে থেকে একটি পেতে পারে। Consumer API-গুলো WidgetRef access-কে Riverpod-স্টাইল কোডের সঙ্গে সামঞ্জস্যপূর্ণ রাখে।

ProviderScope-এর মালিকানা

Container মালিকানা dispose-এর দায়িত্ব বদলে দেয়।

অভ্যন্তরীণ container

ProviderScope(child: ...) স্বয়ংক্রিয়ভাবে dispose করে

বাহ্যিক container

ProviderScope(container: c, ...) এর জন্য caller-কে c.dispose() করতে হয়

অনিয়ন্ত্রিত scope

UncontrolledProviderScope কখনও container dispose করে না

সাধারণ ভুল

widget test-এ pending timer leak এড়াতে বাইরে থেকে inject করা ProviderContainer dispose করতে ভুলবেন না।

Consumer ভ্যারিয়েন্ট

সব বিকল্প WidgetRef প্রকাশ করে; widget-এর ধরন এবং local state-এর প্রয়োজন অনুযায়ী বেছে নিন।

অ্যাপের মূল

প্রতিটা কখন ব্যবহার করবেন

Consumer: ছোট reactive এলাকার জন্য local builder ব্লক।
ConsumerWidget: build(context, ref) সহ stateless widget.
ConsumerStatefulWidget: ConsumerState-এর ভিতরে ref সহ stateful widget.

উদাহরণ: ConsumerStatefulWidget

যখন WidgetRef এবং local mutable 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-এর অভ্যন্তরীণ লজিক rebuild-গুলোকে post-frame এ সূচিবদ্ধ করে, ফলে build-এর সময় setState-জনিত সমস্যা কমে।
শুধু সেই মানগুলোর জন্য WidgetRef.watch ব্যবহার করুন যেগুলো rebuild ট্রিগার করা উচিত।
side effect-গুলো build-এর বাইরে রাখুন; callback এবং invoke/refresh মেথড ব্যবহার করুন।

পরবর্তী পদক্ষেপ

Testing

unit এবং widget test-এ container lifecycle, override এবং async আপডেট যাচাই করুন।

Testing খুলুন

API Reference

ProviderScope, WidgetRef এবং container method-এর signature দেখুন।

API Reference খুলুন