بحث عالی در مورد پخش کننده: تجربه مصاحبه عجیب و غریب من

مصاحبه ای که باعث شد من لرزید
بنابراین من در آنجا بودم که در یک اتاق جلسات مجازی نشسته بودم ، آماده است تا این افراد خوب را با دانش فلاکت خود تحت تأثیر قرار دهم. همه چیز به آرامی پیش می رفت تا اینکه موضوع ویجت های حالت در مقابل تابعیت مطرح شود.
مصاحبه کننده: “ما هرگز از آنها استفاده نمی کنیم. آنها باید ممنوع شوند. همه ایالت ها باید با یک راه حل مدیریت دولتی مانند ارائه دهنده ، RiverPod یا بلوک اداره شوند.”
من ، در ذهنم: “آیا من این را سوءاستفاده کردم؟ شاید اینترنت من عقب بیفتد و او واقعاً گفت” ما بیشتر از مدیریت دولت استفاده می کنیم؟ “
اما نه ، او دو برابر شد و ادعا کرد Statefulwidgets عمل بدی است و هرگز نباید در کد تولید استفاده شودبشر در آن لحظه ، من دو گزینه داشتم:
- مودبانه موافق و حرکت می کند ، و اطمینان حاصل کردم که مصاحبه من به راحتی انجام شد.
- به فیلسوف Full-Stack Flutter بروید و به آنها آموزش دهید که چرا این مزخرف مطلق است.
من با گزینه 1 رفتم زیرا ، صادقانه بگویم ، بحث در مصاحبه ایده وحشتناکی است. اما ناامیدی هنوز هم باقی مانده است ، بنابراین من در اینجا هستم ، این پست وبلاگ را برای بازگرداندن تعادل به جهان Flutter می نویسم.
ویجت های بدون تابش در مقابل: معامله بزرگ چیست؟
بیایید با اصول اولیه شروع کنیم.
- بی تاب و بیرونی: تغییر ناپذیر پس از ساخت ، نمی تواند وضعیت داخلی خود را تغییر دهد.
- مفتول: قابل تغییر می تواند حالت را حفظ کرده و UI را بر این اساس به روز کند.
وقتی UI شما نیازی به تغییر پویا ندارد ، یک WESTLESSLEADGET عالی است. به نمایش متن ، نمادها یا تصاویر استاتیک فکر کنید. اما چه اتفاقی می افتد که برای واکنش به تعامل کاربر به ویجت نیاز دارید؟ این جایی است که در حال درخشش است.
یک مثال ساده:
class CounterWidget extends StatefulWidget {
@override
_CounterWidgetState createState() => _CounterWidgetState();
}
class _CounterWidgetState extends State<CounterWidget> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Column(
children: [
Text('Counter: $_counter'),
ElevatedButton(
onPressed: _incrementCounter,
child: Text('Increment'),
),
],
);
}
}
این یک برنامه پیشخوان ساده است. اگر ما این کار را به صورت بدون تابعیت درست کردیم ، کار نمی کند زیرا _counter
نیاز به تغییر دارد.
“فقط از مدیریت دولت استفاده کنید” – یک بیانیه اشتباه
اکنون ، بیایید به بزرگترین اسطوره بپردازیم: “ما به دلیل مدیریت دولتی نیازی به پخش کننده های دولتی نداریم.”
راه حل های مدیریت دولتی مانند ارائه دهنده ، RiverPod و Bloc برای دارای برنامه گسترده دولت ، اما آیا ما واقعاً برای همه چیز به آنها احتیاج داریم؟
تصور کنید که نیاز به ردیابی یک دکمه یا یک قسمت متن متمرکز شده است. آیا قرار است برای آن ارائه دهنده ای ایجاد کنیم؟ همه چیز را در یک تغییر دهنده بسته بندی کنید؟ رویدادهای بلوک اعزام برای هر دکمه را فشار دهید؟
این مانند استخدام تیمی از مهندسین برای تغییر لامپ است. مطمئناً ، این کار می کند ، اما چرا چیزها را بیش از حد پیچیده می کند؟
چه زمانی از stayfulwidgets استفاده کنید
- عناصر UI که فقط به حالت محلی احتیاج دارند (به عنوان مثال ، ضامن ، انیمیشن ، کنترل کننده های زمینه متن)
- نگه داشتن حالت در ویجت که نیازی به اشتراک گذاری نیست
- اجزای تعاملی ساده مانند کارت قابل ارتقا یا منوی کشویی
چه زمانی از مدیریت دولت استفاده کنیم
- هنگامی که دولت باید در چندین ابزارک به اشتراک گذاشته شود (به عنوان مثال ، احراز هویت کاربر ، مضامین ، داده های سبد خرید)
- هنگام مدیریت منطق پیچیده تجارت
- هنگامی که پایداری دولتی در صفحه ها لازم است
استدلال “شر ضروری”
بله ، StayfulWidgets کامل نیستند. آنها محدودیت هایی دارند ، مانند محدودیت های چرخه عمر و پتانسیل بازسازی های غیر ضروری. اما آنها را صدا می کند بد مثل این است که بگوییم چاقوها بد هستند زیرا می توانند مردم را قطع کنند – وقتی در واقعیت ، برای پخت و پز ضروری هستند.
یک برنامه Flutter به خوبی متعادل باید از هر دو سطح استاندارد و مدیریت دولت با عاقلانه استفاده کند. ممنوعیت کورکورانه BANDFULWIDGETS مانند این است که بگوییم ، “ما از این پس فقط از پیچ گوشتی استفاده خواهیم کرد – هیچ چکش مجاز نیست!”
بنابراین ، برای مصاحبه کننده عزیزم ، اگر این مطلب را می خوانید: من با احترام مخالفم. و برای همسایگان من ، اجازه ندهید که کسی به شما بگوید که در صورت وجود منسوخ شده منسوخ شده است. آنها یک ابزار ضروری در ابزار شما هستند و دانستن اینکه چه موقع از آنها استفاده کنید ، شما را به یک توسعه دهنده بهتر تبدیل می کند.
پایان
به همه توسعه دهندگان Flutter در آنجا – زمان دیگری کسی به شما می گوید هرگز نباید از آنها استفاده شود، نفس عمیق بکشید ، لبخند بزنید و بدانید که با یک افراط گرای سر و کار دارید. کد نویسی را ادامه دهید ، یادگیری را ادامه دهید و از ابزارهای مناسب برای کار مناسب استفاده کنید!
و در مورد مصاحبه من؟ خوب … بیایید فقط بگوییم که من به زودی در آنجا کار نخواهم کرد.