شروع فلاتر از صفر: نصب، اولین اپ و ساختار پروژه
اگر میخواهید فلاتر را شروع کنید، این راهنما قدمبهقدم شما را از نصب SDK تا اجرای اولین اپ و فهمیدن ساختار پروژه میبرد؛ همراه با نکاتی که در شروع کار وقتتان را نجات میدهد.
اپ کند کاربر را فراری میدهد. این ۹ تکنیک عملی، از const و ListView.builder تا DevTools و Isolate، کمک میکند اپ فلاتر شما روی دستگاههای ضعیف هم روان بماند.

فلاتر ذاتاً سریع است، ولی کد بد میتواند همین سرعت را از بین ببرد. هدف، ۶۰ فریم بر ثانیه است (یعنی هر فریم حداکثر حدود ۱۶ میلیثانیه). این نه تکنیک عملی به شما کمک میکنند.
عملکرد را همیشه در حالت profile روی یک گوشی واقعی (ترجیحاً ضعیف) بسنجید، نه در debug و شبیهساز:
flutter run --profileسپس Flutter DevTools را باز کنید و بخش Performance را ببینید. فریمهای قرمز یعنی مشکل.
ویجتی که const است، هر بار دوباره ساخته نمیشود:
const Padding(
padding: EdgeInsets.all(16),
child: Text('عنوان'),
)قاعدهی ساده: هر جا میتوانید const بگذارید (لینتر prefer_const_constructors یادآوری میکند).
اگر state در بالای درخت عوض شود، کل زیردرخت دوباره ساخته میشود. ویجتهای بزرگ را به ویجتهای کوچکتر بشکنید و state را نزدیک جایی که لازم است نگه دارید. به جای یک متد build ۳۰۰ خطی، چند کلاس ویجت داشته باشید.
ListView.builder(
itemCount: items.length,
itemBuilder: (context, i) => ItemTile(items[i]),
)ListView(children: [...]) همهی آیتمها را یکجا میسازد، ولی builder فقط موارد قابلمشاهده را. اگر آیتمها ارتفاع ثابت دارند، itemExtent را هم بدهید.
تصویر بزرگ را در اندازهی کوچک نمایشدادن حافظهی زیادی میخورد:
Image.network(url, cacheWidth: 400)برای تصاویر شبکه از یک کش مثل cached_network_image استفاده کنید.
اینها لایهی جدا (saveLayer) میسازند که گران است. جایگزینها: FadeTransition، AnimatedOpacity، و برای گوشهگرد کردن، decoration با borderRadius بهجای ClipRRect روی محتوای سنگین.
پردازش JSON حجیم، فشردهسازی یا تبدیل تصویر نباید رابط را قفل کند:
final result = await Isolate.run(() => parseHugeJson(text));بخشی که مدام انیمیت میشود را در RepaintBoundary بگذارید تا بقیهی صفحه در هر فریم دوباره رنگ نشود. ولی بیحساب استفاده نکنید؛ هر مرز هزینهی خودش را دارد.
shrinkWrap: true روی لیست بزرگ، همهی آیتمها را اندازهگیری میکند و کند است. بهجای آن از CustomScrollView با SliverList استفاده کنید.
یادتان باشد: بهینهسازی زودهنگام بدون اندازهگیری فقط کد را پیچیده میکند. اول DevTools، بعد تصمیم.
دورهی VIP فست فلاتر از صفر تا انتشار اپلیکیشن، با پشتیبانی مستقیم مدرس.