تصور کنید دنیایی که در آن ساختار یک صفحه نمایش دیگر پس از مرحله ساخت (Build Phase) منجمد و ثابت نیست. در رویداد I/O ۲۰۲۶، تیم فلاتر از GenUI پرده برداشت؛ سیستمی که بر پایه پروتکل باز A2UI (Agent-to-UI) بنا شده است و به عاملهای هوش مصنوعی اجازه میدهد تا ویجتهای واقعی و شتابیافته سختافزاری فلاتر را در لحظه و بهصورت پویا ترکیب و ایجاد کنند.
تکامل مدل رابط کاربری (UI Model)
تا پیش از این، برای بخش بزرگی از دوران حیات فلاتر، توافق ساده بود: توسعهدهندگان یک درخت ویجت (Widget Tree) را مینوشتند، آن را منتشر میکردند و در زمان اجرا تنها دادهها تغییر میکردند. اما اکنون این فرض از بین رفته است. GenUI صرفاً یک تصویر، یک وبویو یا قطعهای از کدهای HTML که در یک کانتینر قرار گرفته باشد نیست. در عوض، A2UI یک پروتکل ساختارمند را تعریف میکند که به یک عامل (مانند Gemini، Claude، GPT-4o یا یک مدل محلی) اجازه میدهد درخت ویجتهای فلاتر را توصیف کند. سپس فلاتر این درخت را دقیقاً مانند کدهای دستنویس رندر میکند و در عین حال، همان شتاب سختافزاری و تعاملپذیری (Interactivity) را حفظ مینماید.
سالها بود که توسعهدهندگان برای تغییر صفحات بدون نیاز به ارسال بهروزرسانیهای جدید، از الگوهای Server-Driven UI استفاده میکردند، اما این روش معمولاً مستلزم سازش در کیفیت رندرینگ بومی یا ساخت مجموعهای عظیم از لولهکشیهای سفارشی برای شبیهسازی این رفتار بود. GenUI با تبدیل این الگو به یک شهروند درجهیک در سطح پروتکلِ فریمورک، بازی را تغییر میدهد. این رویکرد شباهت زیادی به تحولات اخیر در ابزارهای طراحی دارد، جایی که فیگما نیز تلاش کرده است تا تبدیل طرحها به کدهای ساختاریافته و کاربردی را تسهیل کند. طبق گزارش وبسایت dev.to، این رویکرد همان تعامل و عملکردی را ارائه میدهد که اپلیکیشنهای استاندارد فلاتر دارند.
در طی این رویداد، دو دمو (Demo) اصلی توانمندیهای این سیستم را به نمایش گذاشتند:
- Finnish it: یک اپلیکیشن یادگیری زبان که رابطهای تمرینی را بهصورت زنده و بر اساس نحوه تعامل زبانآموز با سیستم تولید میکرد. در اینجا صفحه از پیش ساخته نشده بود که جایگزین شود، بلکه توسط یک عامل GenUI بهصورت لحظهای اسمبل (Assembled) میشد.
- Hatcha: یک اپلیکیشن برنامهریزی رویداد که از همان منطق تولیدی استفاده میکرد تا ثابت کند این فناوری صرفاً یک «ترفند نمایشی» نیست که به یک مورد خاص محدود باشد، بلکه در کاربردهای متنوع قابل اجراست.
جزئیات پیادهسازی و محدودیتها
برای جلوگیری از بروز «هرجومرج در چیدمان» (Layout Chaos)، واحد Google DeepMind سه درس مشخص را که از ساخت رابط کاربری تولیدی در خودِ اپلیکیشن Gemini آموخته بودند، به اشتراک گذاشت. این محدودیتها برای انتقال GenUI از یک ابزار نوظهور به یک ابزار واقعاً کاربردی، حیاتی هستند:
- محدود کردن عامل (Constrain the Agent): عاملها نباید با یک بوم خالی مواجه شوند؛ بلکه باید به آنها یک سیستم کامپوننتِ «سلیقهمند» و تعریفشده داده شود تا از ایجاد چیدمانهای پیشبینیناپذیر جلوگیری شود.
- گذرگاه منتقد (The Critic Pass): قابلیت اطمینان بهطور معناداری بهبود مییابد اگر یک فراخوانی دوم از مدل (مدل دوم) برای بازبینی رابط کاربری تولید شده، پیش از آنکه برای کاربر رندر شود، اجرا گردد.
- قالب در برابر تولید (Template vs. Generate): توسعهدهندگان باید برای صفحاتی که ماهیت قطعی دارند (Deterministic)، مانند صفحات تنظیمات، از قالبهای ثابت استفاده کنند و تولید زنده را تنها برای رابطهای شخصیسازی شده با تغییرات بالا رزرو نمایند.
در کنار GenUI، انتشار نسخه Flutter 3.44 و Dart 3.12 قابلیت Agentic Hot Reload را معرفی میکند. این ویژگی با استفاده از سرور MCP (Model Context Protocol) در دارت و فلاتر، حلقه ارتباطی میان عاملهای هوش مصنوعی و اپلیکیشن در حال اجرا را میبندد. این قابلیت مشکلی قدیمی را حل میکند که در آن توسعهدهنده مجبور بود خروجی AI را بهصورت دستی کپی کند، دستورات را اجرا نماید و منتظر بماند تا ببیند آیا تغییرات اعمال شده است یا خیر. با این حال، ادغام عمیق AI در کدنویسی همیشه بدون چالش نبوده و تجربیاتی از نقاط ضعف مدل Gemini Flash در محیط استودیو نشان میدهد که هنوز مسیر رسیدن به اتکای کامل به کدنویسی مبتنی بر حس (Vibe Coding) دشوار است.
تجربه جدید توسعهدهنده
اکنون عاملها میتوانند از طریق Dart Tooling Daemon بهطور خودکار اپلیکیشن را شناسایی کنند، بلافاصله پس از ویرایش کد، Hot Reload را فعال نمایند و وضعیت زنده درخت ویجتها و دادههای تشخیصی (Diagnostic State) را استخراج کنند. این امر به عامل اجازه میدهد تا به جای تکیه صرف بر کدهای منبع استاتیک، با استفاده از وضعیت زنده (Live State) درباره اپلیکیشن استدلال کند.
این جریان کاری با هر ابزار سازگار با MCP، از جمله Cursor، Windsurf، Claude Code و Gemini CLI ادغام میشود تا اطمینان حاصل شود که هیچ وابستگی اجباری به یک فروشنده خاص (Vendor Lock-in) وجود ندارد. همچنین برای اینکه عاملها به جای «خودسری» در الگوهای عمومی، از کنوانسیونهای فریمورک پیروی کنند، گوگل مجموعه Flutter Agent Skills را در گیتهاب منتشر کرد. این مخزن، راهنماییهای تخصصی برای وظایفی در حوزههای حساس مانند ناوبری (Navigation)، مدیریت وضعیت (State Management) و بومیسازی (Localization) ارائه میدهد.
تغییرات ساختاری در Flutter 3.44
نسخه Flutter 3.44 شامل چندین تغییر ساختاری دیگر است که به سمت هستهای سریعتر و ماژولارتر حرکت میکند:
- رندرینگ: موتور Impeller اکنون رندرکننده انحصاری در اندروید ۱۰ و نسخههای بالاتر است. گوگل با حذف Skia، مشکل لرزش تصویر در اولین اجرا (First-launch shader jank) را بهطور کامل ریشهکن کرده است.
- جداسازی (Decoupling): کتابخانههای Material و Cupertino اکنون از هسته اصلی فریمورک جدا شده و به صورت بستههایی با نسخهبندی مستقل هستند. این تغییر اجازه میدهد یک کامپوننت جدید Material 3 در همان روزی که تیم طراحی آن را نهایی میکند منتشر شود، بدون اینکه نیاز باشد منتظر چرخه انتشار سه ماهه فلاتر بماند.
- مدیریت وابستگی: ابزار Swift Package Manager جایگزین CocoaPods شده و اکنون تجربه پیشفرض و استاندارد برای توسعه در iOS و macOS است.
در یک بهروزرسانی جزئی اما کاربردی، Dart 3.12 اکنون اجازه میدهد فیلدهای خصوصی (Private Fields) مستقیماً به عنوان پارامترهای سازنده نامگذاری شده (Named Constructor Parameters) استفاده شوند که نیاز به لیستهای مقداردهی اولیه دستی (Manual Initializer Lists) را برطرف میکند.
این تغییرات به این معناست که «پوسته ناوبری» (Navigation Shell) یک اپلیکیشن ایستا باقی خواهد ماند، اما محتوای درون آن سیال خواهد شد. اگرچه این قابلیت در حال حاضر در حالت پیشنمایش (Preview) است، اما گوگل در تلاش است تا گذار از اپلیکیشنهای استاتیک به تجربههای عاملمحور را استانداردسازی کند. توسعهدهندگانی که در برابر این روند مقاومت کنند، ممکن است در آینده قادر به پاسخگویی به نیازهای مشتریان برای رابطهای فوقشخصیشده (Hyper-personalized) نباشند.
گام بعدی شما
- بررسی مستندات پروتکل A2UI برای درک نحوه تعریف ویجتها توسط مدلهای زبانی.
- تست قابلیت Agentic Hot Reload در محیط Cursor برای سرعت بخشیدن به دیباگ.
- مطالعه Flutter Agent Skills در گیتهاب برای بهینهسازی تعامل مدلها با کد.
اما تأثیر این تغییرات بر هزینههای پردازشی در لبه شبکه حتی پیچیدهتر است — در گزارش بعدی ما درباره بهینهسازی الاستیک مدلها بخوانید.




گفتگو