Flutter Dart زبان کا استعمال کرتے ہوئے ایک کوڈ بیس سے کراس پلیٹ فارم ایپلیکیشنز بنانے کے لیے Google کا اوپن سورس فریم ورک ہے۔ Flutter Documentation, 2024 کے مطابق، فریم ورک iOS، Android، Web، Windows، macOS اور Linux کے لیے نیٹیو کوڈ میں کمپائل ہوتا ہے، بغیر WebView یا JavaScript برج کے تمام پلیٹ فارمز پر یکساں UI رویہ فراہم کرتا ہے۔
اہم نکات
Flutter ایک SDK (سافٹ ویئر ڈویلپمنٹ کٹ) اور یوزر انٹرفیس بنانے کا فریم ورک ہے، جسے Google نے 2015 میں متعارف کرایا تھا۔ Flutter 1.0 کا پہلا مستحکم ورژن دسمبر 2018 میں جاری ہوا۔ React Native کے برعکس، Flutter JavaScript اور نیٹیو کوڈ کے درمیان برج استعمال نہیں کرتا — یہ براہ راست پروسیسر کی نیٹیو ہدایات میں کمپائل ہوتا ہے۔
Flutter کی کلیدی خصوصیت اس کا اپنا رینڈرنگ انجن ہے۔ فریم ورک UIKit (iOS) یا Android کے View سسٹم پر انحصار نہیں کرتا۔ اس کے بجائے، Flutter Skia (2024 سے پہلے) یا نئے Impeller انجن کے ذریعے ہر پکسل کو آزادانہ طور پر کھینچتا ہے۔ یہ تمام پلیٹ فارمز پر یکساں ظاہری شکل کو یقینی بناتا ہے اور مختلف OS ورژنز کے درمیان موافقت کے مسائل کو ختم کرتا ہے۔
Statista 2024 کے مطابق، Flutter مقبولیت میں کراس پلیٹ فارم فریم ورکس میں پہلے نمبر پر ہے: تقریباً 46% ڈویلپرز موبائل ڈویلپمنٹ کے لیے اسے استعمال کرتے ہیں۔ فریم ورک Google Pay، Alibaba، eBay، BMW اور Tencent کے منصوبوں میں استعمال ہوتا ہے۔
پہلا Flutter کا الفا ورژن 2015 میں Dart ڈویلپر سمٹ میں Sky کے نام سے پیش کیا گیا۔ 2018 میں صرف iOS اور Android کی سپورٹ کے ساتھ Flutter 1.0 جاری ہوا۔ Flutter 2.0 (2021) نے Web اور Desktop سپورٹ شامل کی۔ Flutter 3.0 (2022) نے macOS اور Linux کے لیے مستحکم سپورٹ متعارف کرائی۔ Flutter 3.16 (2023) نے Impeller متعارف کرایا — Metal اور Vulkan پر مبنی ایک نیا رینڈرنگ انجن۔
Flutter 3.22 (2024) iOS پر ڈیفالٹ طور پر Impeller شامل کرتا ہے، Material Design 3 کی بہتر سپورٹ، میکرو ایکسٹینشنز کے ساتھ Dart 3.4، اور پلیٹ فارم وسائل تک براہ راست رسائی کے لیے بلٹ ان Native Assets سپورٹ۔ Google رپورٹ کرتا ہے کہ Impeller Skia کے مقابلے میں فریم جھٹکے کو 90% کم کرتا ہے۔
Dart ایک پروگرامنگ زبان ہے جسے Google نے 2011 میں بنایا اور Flutter میں استعمال کیا جاتا ہے۔ Dart سخت ٹائپنگ کو JIT کمپائلیشن (Hot Reload کے لیے) اور AOT کمپائلیشن (پروڈکشن بلڈز کے لیے) صلاحیتوں کے ساتھ جوڑتا ہے۔ Dart 3.0 (2023) نے پیٹرن میچنگ، سیلڈ کلاسز اور ریکارڈز کو مستحکم فیچرز کے طور پر متعارف کرایا۔
Dart میں Null safety ایک لازمی فیچر ہے جو ورژن 2.12 سے متعارف کرایا گیا۔ کمپائلر بلڈ ٹائم پر تمام nullable اقسام کو چیک کرتا ہے، رن ٹائم پر NullPointerException کو ختم کرتا ہے۔ ڈیٹا کی اقسام (int, String, bool) ڈیفالٹ طور پر non-nullable ہیں، اور nullable اقدار ? سابقہ استعمال کرتی ہیں (مثال کے طور پر، String? name)۔
Flutter کا فن تعمیر تین سطحی اصول پر بنایا گیا ہے۔ نچلی سطح انجن (C/C++) ہے، جو رینڈرنگ، I/O اور پلیٹ فارم APIs تک رسائی کے لیے ذمہ دار ہے۔ درمیانی سطح فریم ورک (Dart) ہے، جو ویجٹ سسٹم، جیسچرز، اینیمیشنز اور نیویگیشن کو نافذ کرتا ہے۔ اوپری سطح ایپلیکیشن (Dart) ہے، جو ویجٹس کو ایک ٹری میں جمع کرتی ہے۔
Flutter میں، ہر چیز ایک ویجٹ ہے۔ ویجٹس دو قسموں کے ہوتے ہیں: StatelessWidget (ناقابل تبدیل، حالت محفوظ نہیں کرتا) اور StatefulWidget (قابل تبدیلی، State کے ذریعے حالت کا انتظام کرتا ہے)۔ ویجٹ ٹری ایک درجہ بندی کا ڈھانچہ ہے جہاں ہر چائلڈ ویجٹ پیرنٹ کے اندر نیسٹڈ ہوتا ہے۔ Scaffold، AppBar، Container، Text، Column، Row — یہ بنیادی تعمیراتی بلاکس ہیں۔
BuildContext ایک آبجیکٹ ہے جو ٹری میں ویجٹ کی پوزیشن بتاتا ہے۔ MediaQuery.of(context) اسکرین کے طول و عرض حاصل کرتا ہے، Theme.of(context) موجودہ تھیم حاصل کرتا ہے۔ BuildContext نیویگیشن (Navigator.of(context))، InheritedWidget تک رسائی، اور Localizations.of کے ذریعے لوکیل ترجمہ کے لیے استعمال ہوتا ہے۔
Impeller Flutter کا جدید رینڈرنگ انجن ہے، جو C++ میں لکھا گیا ہے اور Metal (iOS/macOS) اور Vulkan (Android) استعمال کرتا ہے۔ Skia کے برعکس، جو ہر فریم کو شروع سے دوبارہ کھینچتا تھا، Impeller شیڈرز کو پہلے سے کمپائل کرتا ہے اور انہیں کیشے میں محفوظ کرتا ہے۔ یہ پیچیدہ مناظر کی پہلی رینڈرنگ کے دوران تاخیر کو ختم کرتا ہے اور GPU لوڈ کو کم کرتا ہے۔
Google Flutter ٹیم کے ٹیسٹ ظاہر کرتے ہیں کہ Impeller شیڈر کمپائلیشن ٹائم کو 200–500 ms (Skia) سے کم کرکے 1–3 ms کر دیتا ہے۔ iPhone 13 Pro پر، Impeller کی امپلس رینڈرنگ فریم ڈراپ کے بغیر 120 FPS حاصل کرتی ہے۔ Android پر Vulkan کے ساتھ، یہ درمیانے درجے کے آلات (Xiaomi Redmi Note 12) پر بھی مستحکم 60 FPS فراہم کرتا ہے۔
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('Flutter ایپلیکیشن')),
body: const Center(
child: Text('ہیلو، Flutter!'),
),
),
);
}
}
ایک کوڈ بیس — Flutter کا بنیادی فائدہ۔ ایک Dart پروجیکٹ iOS، Android، Web، Windows، macOS اور Linux کے لیے کمپائل ہوتا ہے۔ Google کے مطابق، یہ علیحدہ iOS اور Android پروجیکٹس کے مقابلے میں ڈویلپمنٹ کا وقت 30–50% کم کرتا ہے۔ Alibaba نے Flutter پر منتقل ہونے کے بعد ورژن جاری کرنے کا وقت 30% کم کر دیا۔
کارکردگی Flutter کی نیٹیو کے قریب ہے۔ Dart کا ARM اور x86_64 مشین کوڈ میں AOT کمپائلیشن تشریحی تاخیر کو ختم کرتا ہے۔ Impeller انجن 2018 کے آلات (iPhone XR، Samsung Galaxy S9) پر بھی 60 FPS کی ضمانت دیتا ہے۔ Google کے مطابق، Flutter ایپلیکیشنز میں 99.5% فریم بغیر جھٹکے کے رینڈر ہوتے ہیں۔
Hot Reload — فوری کوڈ اپ ڈیٹ کی ٹیکنالوجی۔ ڈویلپر سورس کوڈ تبدیل کرتا ہے، فائل محفوظ کرتا ہے، اور Flutter موجودہ ایپلیکیشن سٹیٹ کو کھونے کے بغیر 300–800 ms میں ویجٹ ٹری کو دوبارہ بناتا ہے۔ یہ UI ڈیزائن کے تکرار کو تیز کرتا ہے: مکمل دوبارہ تعمیر کا انتظار کیے بغیر سیکنڈز میں مارجن، رنگ اور اینیمیشن تبدیل کیے جا سکتے ہیں۔
Material Design 3 اور نیٹیو Cupertino ڈیزائن زبان (iOS اسٹائل) معیاری Flutter پیکیج میں شامل ہیں۔ Material 3 ویجٹس ڈائنامک کلرز (Material You)، ریسپانسیو لے آؤٹ اور اسکرین ٹرانزیشن اینیمیشنز کو سپورٹ کرتے ہیں۔ CupertinoPageTransition اور CupertinoNavigationBar نیٹیو iOS نیویگیٹر کے رویے کی نقل کرتے ہیں۔
کسٹمائزیشن ویجٹس کے لیے ہر پلیٹ فارم پر کسٹم View بنانے کی ضرورت نہیں۔ بس build() کو اوور رائڈ کریں اور ایک نیا ویجٹ واپس کریں۔ اینیمیشن پیکجز (AnimatedContainer، Hero، TweenAnimationBuilder) اور جیسچر پیکجز (GestureDetector، Dismissible) پلیٹ فارم کوڈ لکھے بغیر UI اینیمیشن منظرناموں کا 95% احاطہ کرتے ہیں۔
pub.dev Dart اور Flutter کے لیے سرکاری پیکج رجسٹری ہے۔ جولائی 2024 تک، رجسٹری میں 45,000 سے زائد پیکجز شائع ہو چکے ہیں۔ ایک پیکج انسٹال کرنے کے لیے flutter pub add <پیکج_کا_نام> کمانڈ استعمال کیا جاتا ہے۔ Pub خود بخود انحصار حل کرتا ہے، ورژن مطابقت چیک کرتا ہے اور pubspec.lock جنریٹ کرتا ہے۔
Flutter میں سٹیٹ مینجمنٹ اہم آرکیٹیکچرل چیلنجز میں سے ایک ہے۔ flutter_bloc کے علاوہ، مقبول حل میں شامل ہیں: Provider (Google کی تجویز کردہ، InheritedWidget استعمال کرتا ہے)، Riverpod (کمپائل ٹائم سیفٹی کے ساتھ Provider کا دوبارہ ڈیزائن کردہ ورژن) اور GetX (سب ایک میں: سٹیٹ، روٹنگ، DI)۔ Provider شروع کرنے کے لیے سب سے آسان ہے: ChangeNotifierProvider ماڈل کو لپیٹتا ہے، اور Consumer ڈیٹا تبدیل ہونے پر ویجٹ کو دوبارہ بناتا ہے۔
Flutter میں ٹیسٹنگ تین سطحوں پر سپورٹ کی جاتی ہے۔ یونٹ ٹیسٹ (flutter test) UI کے بغیر فنکشنز اور کلاسز کی جانچ کرتے ہیں۔ ویجٹ ٹیسٹ (testWidgets) علیحدہ ماحول میں انفرادی ویجٹس رینڈر کرتے ہیں۔ انٹیگریشن ٹیسٹ (IntegrationTest) ڈیوائس یا سمیولیٹر پر مکمل ایپلیکیشن چلاتے ہیں۔ Flutter 3.22 نے پیچ اینالیٹکس اور بہتر کوڈ کوریج رپورٹنگ کے ذریعے پیچ ٹیسٹس کے لیے سپورٹ شامل کی۔
dio ایک HTTP کلائنٹ ہے جو انٹرسیپٹرز، ٹائم آؤٹس اور FormData کو سپورٹ کرتا ہے۔ GitHub پر 40% Flutter پروجیکٹس میں استعمال ہوتا ہے۔ Dio لاگنگ، دوبارہ کوشش اور تصدیقی ٹوکن شامل کرنے کے لیے درخواست انٹرسیپشن کو سپورٹ کرتا ہے۔ دوسری سب سے مقبول لائبریری retrofit ہے، جو ٹائپ شدہ API کلائنٹس جنریٹ کرتی ہے۔
flutter_bloc BLoC (بزنس لاجک کمپوننٹ) پیٹرن پر مبنی ایک سٹیٹ مینجمنٹ لائبریری ہے۔ BlocProvider ویجٹ ٹری میں نیچے سٹیٹس پاس کرتا ہے، BlocBuilder سٹیٹ تبدیل ہونے پر UI دوبارہ بناتا ہے، اور BlocListener سائیڈ ایفیکٹس (نیویگیشن، SnackBar) کو ہینڈل کرتا ہے۔ Cubit ایونٹس کے بغیر BLoC کا سادہ ورژن ہے۔
go_router Google کی طرف سے Flutter کے لیے اعلامیاتی نیویگیشن ہے۔ راستے GoRouter کنفیگریشن میں نیسٹڈ راستوں، ری ڈائریکٹس اور ڈیپ لنکس کی سپورٹ کے ساتھ بیان کیے جاتے ہیں۔ ShellRoute BottomNavigationBar ٹیبز کے درمیان نیویگیشن تقسیم کرتا ہے۔ GoRouter 14.0 ٹائپ سیف پاتھز اور ٹیب سٹیٹ کے تحفظ کے ساتھ StatefulShellRoute کو سپورٹ کرتا ہے۔
| پیکج | تنصیبات/ماہ | مقصد |
|---|---|---|
| dio | 12M+ | انٹرسیپٹرز کے ساتھ HTTP کلائنٹ |
| flutter_bloc | 8M+ | سٹیٹ مینجمنٹ (BLoC) |
| go_router | 5M+ | اعلامیاتی نیویگیشن |
| firebase_core | 10M+ | Firebase انضمام |
اکثر پوچھے گئے سوالات
Flutter Dart زبان استعمال کرتا ہے۔ Dart 3.x null safety، پیٹرن میچنگ، سیلڈ کلاسز اور ریکارڈز کو سپورٹ کرتا ہے۔ Flutter انجن C/C++ میں لکھا گیا ہے، لیکن ڈویلپر خصوصی طور پر Dart میں ایپلیکیشن لکھتا ہے۔ مزید، Swift/Kotlin کوڈ کو کال کرنے کے لیے کسٹم پلیٹ فارم چینلز (Platform Channels) استعمال کیے جا سکتے ہیں۔
انتخاب پروجیکٹ پر منحصر ہے۔ Flutter AOT کمپائلیشن اور اپنے رینڈرنگ انجن کی بدولت اعلیٰ کارکردگی فراہم کرتا ہے۔ React Native وسیع JavaScript ماحولیاتی نظام تک رسائی فراہم کرتا ہے اور موجودہ ویب کوڈ استعمال کرنے کی اجازت دیتا ہے۔ Flutter فریم ریٹ میں آگے ہے، React Native تیار لائبریریوں کی تعداد میں آگے ہے۔
ہاں، Flutter for Web Dart کو JavaScript/DOM یا WebAssembly میں کمپائل کرتا ہے۔ ویب ورژن ریسپانسیو لے آؤٹ، روٹنگ اور کسٹم Canvas عناصر کو سپورٹ کرتا ہے۔ تاہم، پیچیدہ SEO ضروریات کے لیے، Flutter Web سرور سائڈ رینڈرنگ اور نیٹیو HTML کی کمی کی وجہ سے کلاسک React/Vue پروجیکٹس سے پیچھے ہے۔
FlutterFlow Flutter ایپلیکیشنز کو بصری طور پر بنانے کے لیے ایک لو کوڈ پلیٹ فارم ہے۔ ڈویلپر ڈریگ اینڈ ڈراپ کے ذریعے UI بناتا ہے، بصری ایڈیٹر کے ذریعے منطق ترتیب دیتا ہے اور تیار Dart کوڈ ایکسپورٹ کرتا ہے۔ FlutterFlow پروٹوٹائپس اور سادہ ایپلیکیشنز کے لیے استعمال ہوتا ہے، لیکن ہاتھ سے کوڈ کسٹمائزیشن میں کمتر ہے۔
Google Google Pay، Google Classroom اور Google Nest میں Flutter استعمال کرتا ہے۔ دیگر بڑے منصوبوں میں Alibaba (100 ملین صارفین کے ساتھ Xianyu ایپ)، eBay (موبائل ایپ)، BMW (iDrive انٹرفیس)، Tencent (Qidian) اور Toyota (انفوٹینمنٹ سسٹم) شامل ہیں۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں