Parameters
একটি ফাংশনে যেকোনো সংখ্যাক রিকুইরেড পজিশনাল পেরামিটার্স থাকতে পারে । এগুলি হয় Named প্যারামিটার বা অপশনাল Named পেরামিটার দ্বারা অনুসরণ করা যেতে পারে (কিন্তু উভয়ই নয়)।
Named parameters:
Named প্যারামিটারগুলি অপশনাল যদি না সেগুলিকে required হিসাবে চিহ্নিত করা হয়। একটি ফাংশন ডিফাইন করার সময়, Named প্যারামিটারগুলি স্পেসিফাই করতে {param1, param2, …} ব্যবহার করুন। আপনি যদি একটি ডিফল্ট ভ্যালু প্রদান না করেন বা Named প্যারামিটার রিকুইরিড চিহ্নিত না করেন তবে তাদের টাইপ অবশ্যই null হতে হবে কারণ তাদের ডিফল্ট ভ্যালু null হবে:
void enableFlags({bool? bold, bool? hidden}) {...}
একটি ফাংশন কল করার সময়, আপনি paramName: value ব্যবহার করে Named আর্গুমেন্টগুলি স্পেসিফাই করতে পারেন। উদাহরণ স্বরূপ:
enableFlags(bold: true, hidden: false);
null ছাড়াও একটি Named প্যারামিটারের জন্য একটি ডিফল্ট মান ডিফাইন করা যায় , একটি ডিফল্ট ভ্যালু এসাইন করতে = অপারেটর ব্যবহার করুন। ডিফল্ট ভ্যালু অবশ্যই একটি কম্পাইল-টাইম কনস্ট্যান্ট হতে হবে। উদাহরণ স্বরূপ: \
/// Sets the [bold] and [hidden] flags ... void enableFlags({bool bold = false, bool hidden = false}) {...} // bold will be true; hidden will be false. enableFlags(bold: true);
আপনি যদি এর পরিবর্তে একটি Named প্যারামিটার বাধ্যতামূলক করতে চান, যাতে কল করার সময় প্যারামিটারের জন্য একটি ভ্যালু প্রদান করতে হয়, তাদের required হিসেবে anotate করুন:
const Scrollbar({super.key, required Widget child});
Optional positional parameters :
ফাংশন প্যারামিটারের একটি সেট [] থাকলে তাদের অপশনাল পজিশনাল প্যারামিটার হিসাবে চিহ্নিত করে। আপনি যদি একটি ডিফল্ট মান প্রদান না করেন, তাহলে তাদের টাইপ অবশ্যই nullable হতে হবে কারণ তাদের ডিফল্ট মান null হবে:
String say(String from, String msg, [String? device]) { var result = '$from says $msg'; if (device != null) { result = '$result with a $device'; } return result; }
এখানে অপশনাল প্যারামিটার ছাড়া এই ফাংশন কল করার একটি উদাহরণ:
assert(say('Bob', 'Howdy') == 'Bob says Howdy');
এবং এখানে তৃতীয় প্যারামিটারের সাথে এই ফাংশনটিকে কল করার একটি উদাহরণ:
assert(say('Bob', 'Howdy', 'smoke signal') == 'Bob says Howdy with a smoke signal');
Null ছাড়াও অপশনাল পজিশনাল প্যারামিটারের জন্য একটি ডিফল্ট মান স্পেসিফাই করতে = অপারেটর ব্যবহার করুন। ডিফল্ট মান অবশ্যই একটি কম্পাইল-টাইম কনস্ট্যান্ট হতে হবে। উদাহরণ স্বরূপ:
String say(String from, String msg, [String device = 'carrier pigeon']) { var result = '$from says $msg with a $device'; return result; } assert(say('Bob', 'Howdy') == 'Bob says Howdy with a carrier pigeon');