সরবরাহকারী.ফ <এক্স> বনাম কনজিউমার <এক্স> কখন ব্যবহার করবেন Fl


13

আমি এখনও বিড়বিড় করে স্টেট-ম্যানেজমেন্ট কৌশলগুলি সম্পর্কে আমার মাথা আবৃত করছি এবং Provider.of<X>বনাম কখন এবং কেন ব্যবহার করব সে সম্পর্কে কিছুটা বিভ্রান্ত Consumer<X>ডকুমেন্টেশন থেকে আমি বুঝতে পারি (আমি মনে করি) যে এই দুটিয়ের মধ্যে বেছে নেওয়ার সময় আপনি সরবরাহকারী.অফ ব্যবহার করবেন যখন আমরা ডেটাতে অ্যাক্সেস চাইব, তবে আপনার পরিবর্তনের জন্য ইউআইয়ের দরকার নেই। সুতরাং নিম্নলিখিত (ডক্স থেকে নেওয়া) ডেটা অ্যাক্সেস পায় এবং নতুন ইভেন্টগুলিতে ইউআই আপডেট করে:

return HumongousWidget(
  // ...
  child: AnotherMonstrousWidget(// <- This widget will rebuild on new data events
    // ...
    child: Consumer<CartModel>(
      builder: (context, cart, child) {
        return Text('Total price: ${cart.totalPrice}');
      },
    ),
  ),
);

যেখানে, যেখানে আমরা শুধুমাত্র ডেটা প্রয়োজন UI 'তে সঙ্গে পুনর্নির্মাণের চাই না, আমরা ব্যবহার চাই Provider.of<X>সঙ্গে listenথেকে প্যারামিটার সেট false, নীচের হিসাবে:

Provider.of<CartModel>(context, listen: false).add(item); \\Widget won't rebuild

তবে, listenপ্রয়োজনীয় নয় এবং তাই নিম্নলিখিতগুলিও চলবে:

Provider.of<CartModel>(context).add(item); \\listener optional

সুতরাং এটি আমাকে কয়েকটি প্রশ্নের কাছে নিয়ে আসে:

  1. এটি কি পার্থক্য করার সঠিক উপায় Provider.of<X>এবং Consumer<X>। প্রাক্তন ইউআই আপডেট করে না, পরে কি করে?
  2. যদি listenসেট না করা থাকে falseতবে উইজেটটি ডিফল্টরূপে পুনর্নির্মাণ হবে বা পুনর্নির্মাণ হবে না? যদি listenসেট করা হয় true?
  3. কেন আমাদের কাছে Provider.ofইউআই পুনর্নির্মাণের বিকল্প রয়েছে Consumer?

উত্তর:


17

এটা কোন ব্যাপার না। তবে বিষয়গুলিকে দ্রুত ব্যাখ্যা করতে:

Provider.ofহয় শুধুমাত্র প্রাপ্ত এবং একটি বস্তু শোনার জন্য উপায়। Consumer, Selectorএবং সমস্ত * প্রক্সিপ্রোভাডার Provider.ofকাজ করতে কল করে।

Provider.ofবনাম Consumerব্যক্তিগত পছন্দের বিষয়। তবে উভয়ের পক্ষে কয়েকটি যুক্তি রয়েছে

Provider.of

  • ক্লিক হ্যান্ডলারগুলি সহ সমস্ত উইজেট লাইফসাইলে কল করা যেতে পারে didChangeDependencies
  • ইন্ডেন্টেশন বাড়ায় না

উপভোক্তা

  • আরও দানাদার উইজেট পুনর্নির্মাণের অনুমতি দেয়
  • সর্বাধিক বিল্ডকন্টেক্সট এর অপব্যবহার সমাধান করে

এটি সহায়ক। আমি এই প্রতিক্রিয়াটি গ্রহণ করব, বিশেষত অন্যদের জন্য। তবে আপনি এই বিবৃতিটির জন্য কোনও রেফারেন্সের দিকে ইঙ্গিত করতে পারেন: "সরবরাহকারী.ফ হ'ল একমাত্র অবজেক্ট পাওয়ার এবং শোনার একমাত্র উপায় u গ্রাহক, নির্বাচক এবং সমস্ত প্রক্সিপ্রাইডার প্রোভাইডার.এফকে কাজ করার জন্য কল করে।" এটি ডক্সে দেখেছি এমন কিছু নয় এবং এটি সত্যই আমাকে সাহায্য করেছিল!
Oprimus

2
এটি কেবল গ্রাহক / ... কীভাবে কাজ করে তার একটি বাস্তবায়ন বিশদ। উত্স এখানে । আপনি দেখতে পাচ্ছেন যে Consumerএটি মূলত কোনও Provider.ofনতুন উইজেটে ছাড়া কিছুই নয়
রামি রোসলেট

বিল্ডকন্টেক্সটেক্সের অপব্যবহার রোধ করতে শেখার বিষয়ে কি কোনও সংস্থান আছে?
吳 強 福
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.