স্কিপ করে মূল কন্টেন্ট এ যাও
কম্পাইল সেফ

কম্পাইল সেফ

আর নয় ProviderNotFoundException অথবা লোডিং অবস্থাগুলি পরিচালনা করতে ভুলে যাওয়া। যদি Riverpod দিয়ে আপনার কোড কম্পাইল হয়, তাহলে আপনার কোড কাজ করবেই।

এটি প্রভাইডার, তবে তার লিমিটগুলা ছাড়া

এটি প্রভাইডার, তবে তার লিমিটগুলা ছাড়া

রিভারপড প্রোভাইডার দ্বারা অনুপ্রাণিত কিন্তু একই ধরনের একাধিক প্রোভাইডারকে সমর্থন করার মতো কিছু মূল সমস্যা সমাধান করে। যেমনঃ Awaiting, Asynchronous প্রভাইডার, যেখনো জায়গা থেকে প্রভাইডার এড করা; ...

ফ্লাটার এর নির্ভর নয়

ফ্লাটার এর নির্ভর নয়

প্রভাইডার তৈরি, শেয়ার, টেস্ট করুন ফ্লাটার এর উপর কোন নির্ভরশীলতা ছাড়াই. এটির মধ্যে BuildContext ছাড়া প্রভাইডার কনসিউম বা লিসেন ও রিড।

শেয়ারড স্টেট ডিক্লার করুন যেখনো জায়গা থেকে

এখন আপনার আর main.dart ফাইল আর ইউয়াই এর ফাইল এ লাফালাফি করতে হবে না.
আপনার শেয়ারড স্টেটের কোডটি যেখানে এটির জায়গা রয়েছে সেখানে রাখুন, তা একটি পৃথক প্যাকেজে হোক বা যে প্রয়োজনীয় উইজেটের ঠিক পাশেই হোক, তাও টেস্টে কোন রকম কম্প্রোমাইস ছাড়া৷

// A shared state that can be accessed by multiple
// objects at the same time
final countProvider = StateProvider((ref) => 0);

// Consumes the shared state and rebuild when it changes
class Title extends ConsumerWidget {

Widget build(BuildContext context, WidgetRef ref) {
final count = ref.watch(countProvider);
return Text('$count');
}
}

প্রয়োজন হলেই UI পুনরায় গণনা করুন/ইউআই পুনর্নির্মাণ করুন

আমাদের আর build মেথড এর মধ্যে তালিকাগুলি বাছাই/ফিল্টার করতে হবে না বা কোন একটি উন্নত ক্যাশে পদ্ধতি অবলম্বন করতে হবে।

Provider এর সাথে "families", আপনার তালিকা বাছাই (ফিল্টার) করুন বা HTTP রিকুয়েস্ট করুন শুধুমাত্র যখন আপনার তা সত্যিই প্রয়োজন.

final todosProvider = StateProvider<List<Todo>>((ref) => []);
final filterProvider = StateProvider<Filter>((ref) => Filter.all);

final filteredTodosProvider = Provider<List<Todo>>((ref) {
final todos = ref.watch(todosProvider);
switch (ref.watch(filterProvider)) {
case Filter.all:
return todos;
case Filter.completed:
return todos.where((todo) => todo.completed).toList();
case Filter.uncompleted:
return todos.where((todo) => !todo.completed).toList();
}
});

সেফটি এর সাথে প্রভাইডার পড়ুন

একটি প্রভাইডার পরার ক্ষেত্রে আপনি কখনো খারাপ স্টেট পাবেন না। যদি আপনি একটি প্রভাইডার পড়ার (Read) জন্য কোড লিখতে পারেন, তাহলে আপনি একটি ভ্যালিড ভ্যালু পাবেন

এটি এমনকি অ্যাসিঙ্ক্রোনাস লোড করা ভ্যালুগুলির ক্ষেত্রেও প্রযোজ্য। প্রভাইডার এর বিপরীতে, রিভারপড পরিষ্কারভাবে লোডিং/ত্রুটির কেস পরিচালনা করার সুবিধা দেয়।

final configurationsProvider = FutureProvider<Configuration>((ref) async {
final uri = Uri.parse('configs.json');
final rawJson = await File.fromUri(uri).readAsString();

return Configuration.fromJson(json.decode(rawJson));
});

class Example extends ConsumerWidget {

Widget build(BuildContext context, WidgetRef ref) {
final configs = ref.watch(configurationsProvider);

// Use Riverpod's built-in support
// for error/loading states using "when":
return configs.when(
loading: () => const CircularProgressIndicator(),
error: (err, stack) => Text('Error $err'),
data: (configs) => Text('data: ${configs.host}'),
);
}
}

ফ্লাটার এর ডেবটুল এ আপনার স্টেট পর্যবেক্ষন করুন

রিভারপড ব্যবহার করে, আপনার স্টেট ফ্লটারের ডেভটুলের ভিতরের বাক্সের বাইরে দৃশ্যমান।
অধিকন্তু, একটি পূর্ণাঙ্গ স্টেট-পরিদর্শকের কাজ চলছে।

ফ্লাটার এর ডেবটুল এ আপনার স্টেট পর্যবেক্ষন করুন