ApexTeam | Pana | Faam | PizzaTon Founder
Dart Extension (افزونه های دارت)
اخیراً به شدت به زبون شیرین دارت (Dart) علاقمند شایدم معتاد شدم. مخصوصاً که از نسخه 2.7 میشه توش extension نوشت، و خب شاید بهتره بگم بعد از تجربه ی طولانی مدتی که با جاوا داشتم الان چیزی مثل extension باعث میشه به وجد بیام و یه جورایی توی نوشتن extension method ها دارم زیاده روی میکنم شاید :)
حین کار با فلاتر به ویجتی برخوردم به اسم Visibility! واسه اونایی که نمیدونن بگم که به کمک این ویجت میتونید یه ویجت child رو توی صفحه نامرئی کنید؛ مثل کاری که توی اندروید با ویژگی visibility به View ها میتونستیم اونا رو تو سه حالت View.VISIBLE، View.GONEو View.INVISIBLE داشته باشیم.
حقیقتش من از اینکه ویجتم رو بندازم داخل یه ویجت دیگه به اسم Visibility اصلا حس خوبی نداشتم به همین خاطر یه افزونه خیلی ساده نوشتم روی همه ویجت های پروژم که این کار رو برام ساده تر و شیک تر میکنه (البته که کاملا سلیقه ایه!).
extension Visibility on Widget {
Widget visible(bool visibility) {
return visibility ? this : SizedBox.shrink();
}
}
حالا هر ویجت دلخواهی بدون نیاز به wrap شدن توی ویجت Visibility میتونه خاصیت مرئی یا نامرئی شدن رو به شکل زیر داشته باشه :
widget.visible(TRUE/FALSE);
بجای :
Visibility (
visible: FALSE/TRUE,
child: widget,
)
یکی دیگه از مواردی که لازم شد برای کلاس String یک افزونه بنویسم این بود که توی فلاتر متدی نداریم که کد hex بصورت رشته رو تبدیل بکنه به یک شیء از نوع Color بخاطر همین متدش رو در قالب یک extension method نوشتم :
extension StringUtil on String {
Color toColor() {
return new Color(int.parse(this.substring(1, 7), radix: 16) + 0xFF000000);
}
}
خلاصه که پیشنهاد میکنم تا جایی که میشه ازشون استفاده کنید :) خیلی کاربردی و خیلی جذابن!
توی مقاله بعدی کامل توضیح میدم که چجوری میتونید با این قابلیت باحال و خفن کار کنید و extension های مورد نیاز خودتون رو بسازید و ازش لذت ببرید.
مطلبی دیگر از این انتشارات
اجرای متد بعد از ساخت کامل ویجت در فلاتر
مطلبی دیگر از این انتشارات
فلاتر دسکتاپ (Flutter Desktop)
مطلبی دیگر در همین موضوع
جای ادوارد هاپر خالی