StatelessWidget: یہ کیا ہے، کلیدی تصورات اور کام کا اصول

مصنف: IT Sectr اشاعت: 2026-06-30 مطالعے کا وقت: 10 منٹ

StatelessWidget Flutter انٹرفیس کا ایک بنیادی تعمیراتی بلاک ہے جو بلڈ کے بعد اندرونی حالت (state) کو ذخیرہ یا تبدیل نہیں کرتا۔ سرکاری Flutter دستاویزات (Flutter.dev، 2026) کے مطابق، StatelessWidget ایک عام ایپلیکیشن میں تمام ویجیٹس کا 70% تک تشکیل دیتا ہے، کیونکہ یہ ڈیٹا کی جامع پیشکش کے لیے ذمہ دار ہے: متن، آئیکن، تصاویر، پیڈنگ اور کنٹینر۔ StatefulWidget کے برعکس، اس کی بلڈ تفصیل ابتدائیہ (initialization) کے دوران ایک بار کال کی جاتی ہے اور والد (parent) کے دوبارہ بلڈ کرنے تک تبدیل نہیں رہتی۔

اہم نکات

  • StatelessWidget — ایک ویجیٹ بغیر قابل تغیر حالت کے جو انٹرفیس کے اس حصے کو بیان کرتا ہے جو وقت کے ساتھ بدلنے والے ڈیٹا پر منحصر نہیں ہوتا
  • build method — StatelessWidget کا واحد لازمی طریقہ، جو ویجیٹ ٹری لوٹاتا ہے اور ٹری میں داخل ہونے پر ایک بار کال کیا جاتا ہے
  • ناقابل تغیریت (Immutability) — StatelessWidget کے تمام فیلڈز final قرار دیے جاتے ہیں اور مثال (instance) بنانے کے بعد تبدیل نہیں کیے جا سکتے
  • کارکردگی — StatelessWidget StatefulWidget سے سستا ہے، کیونکہ اسے الگ State آبجیکٹ بنانے اور لائف سائیکل کے انتظام کی ضرورت نہیں ہوتی
  • const کنسٹرکٹر — const کا استعمال Flutter کو ویجیٹ کو کیش کرنے اور پیرامیٹرز کے مماثل ہونے پر دوبارہ بلڈ کو مکمل طور پر چھوڑنے کی اجازت دیتا ہے

StatelessWidget کیا ہے؟

StatelessWidget Flutter فریم ورک میں ایک کلاس ہے جو صارف انٹرفیس کے اس حصے کو بیان کرنے کے لیے ڈیزائن کی گئی ہے جو قابل تغیر ڈیٹا پر منحصر نہیں ہوتا۔ StatefulWidget کے برعکس، StatelessWidget میں کوئی اندرونی حالت نہیں ہوتی، یہ صارف کے ان پٹ پر ردعمل نہیں دیتا اور خود اپ ڈیٹ نہیں ہوتا۔ اس کا واحد کام ان پٹ پیرامیٹرز (کنسٹرکٹر کے ذریعے) قبول کرنا اور build طریقہ کے ذریعے انٹرفیس کی تفصیل لوٹانا ہے۔

Flutter دستاویزات (Flutter.dev، مارچ 2026) کے مطابق، StatelessWidget کو ان تمام انٹرفیس عناصر کے لیے استعمال کیا جانا چاہیے جن کا حساب منتقل کردہ پیرامیٹرز کی بنیاد پر کیا جا سکتا ہے اور جنہیں اندرونی طور پر غیر متزامن کارروائیوں یا ایونٹ ہینڈلنگ کی ضرورت نہیں ہوتی۔ عام مثالیں: متن دکھانا (Text)، آئیکن (Icon)، پیڈنگ (Padding)، ترتیب (Center) اور کنٹینر (Container

StatelessWidget اور StatefulWidget کے درمیان انتخاب کرتے وقت، کم سے کم کفایت کا اصول لاگو ہوتا ہے — اگر کوئی ویجیٹ بغیر حالت کے کام کر سکتا ہے، تو اسے StatelessWidget ہونا چاہیے۔ یہ فریم ورک پر بوجھ کم کرتا ہے اور ڈیبگنگ کو آسان بناتا ہے۔

StatelessWidget کب استعمال کریں

StatelessWidget تین منظرناموں میں بہترین ہے: جب ڈیٹا کنسٹرکٹر پیرامیٹرز کے ذریعے منتقل کیا جاتا ہے اور تبدیل نہیں ہوتا، جب ویجیٹ دوسرے جامد ویجیٹس کا مجموعہ ہوتا ہے، اور جب صرف ایک بار UI بلڈ کی ضرورت ہوتی ہے۔ ایک مثال ProfileHeader ویجیٹ ہے، جو کنسٹرکٹر کے ذریعے نام اور اوتار حاصل کرتا ہے — تخلیق کے بعد، یہ والد کے دوبارہ بلڈ کرنے تک تبدیل نہیں ہوتا۔ یہ حقیقی منصوبوں میں زیادہ تر UI کا احاطہ کرتا ہے۔

StatelessWidget کی حدود

StatelessWidget کی بنیادی حد اپنے اندر براہ راست غیر متزامن کارروائیاں (HTTP درخواستیں، ڈیٹا بیس پڑھنا) کرنے سے قاصر ہونا ہے۔ ایسے منظرناموں کے لیے، StatefulWidget یا بیرونی حالت کے انتظام (Riverpod، Bloc، Provider) کے ساتھ StatelessWidget کے امتزاج کی ضرورت ہوتی ہے۔ StatelessWidget میں کوئی لائف سائیکل طریقے نہیں ہیں، اس لیے اس میں ابتدائیہ، سبسکرپشن اور وسائل کی رہائی کا کوڈ دستیاب نہیں ہے۔

StatelessWidget کیسے کام کرتا ہے؟

StatelessWidget کے کام کرنے کا طریقہ کار ایک ہی طریقہ پر مبنی ہے — build(BuildContext context)۔ جب Flutter کو StatelessWidget دکھانے کی ضرورت ہوتی ہے، فریم ورک اس طریقہ کو کال کرتا ہے، اسے موجودہ BuildContext — ٹری میں ویجیٹ کی پوزیشن — دیتا ہے۔ طریقہ ذیلی ویجیٹس (StatelessWidget یا StatefulWidget) کا ایک ٹری لوٹاتا ہے، جسے Flutter پھر اسکرین پر رینڈر کرتا ہے۔

StatefulWidget کے برعکس، جہاں setState کے جواب میں build کو کئی بار کال کیا جا سکتا ہے، StatelessWidget کا build طریقہ صرف اس وقت کال کیا جاتا ہے جب ویجیٹ پہلی بار ٹری میں داخل ہوتا ہے یا جب والد اس کے پیرامیٹرز تبدیل کرتا ہے۔ Flutter مصالحت (reconciliation) کا طریقہ کار استعمال کرتا ہے تاکہ یہ تعین کر سکے کہ آیا پچھلی build کال کے بعد ویجیٹ تبدیل ہوا ہے۔ اگر پیرامیٹرز تبدیل نہیں ہوئے (اور ویجیٹ const قرار دیا گیا ہے)، Flutter دوبارہ بلڈ کرنا چھوڑ دیتا ہے — یہ ایک اہم اصلاحی طریقہ کار ہے۔

Google I/O 2025 (Flutter Engineering Team، مئی 2025) میں Flutter ٹیم کی پیشکش کے مطابق، StatefulWidget میں build کالز کا 60% تک StatelessWidget سے تبدیل کیا جا سکتا ہے اگر فن تعمیر کو صحیح طریقے سے منظم کیا جائے۔ Google ٹیم حالت کو اوپر اٹھانے (State Hoisting) اور کنسٹرکٹرز کے ذریعے ڈیٹا نیچے منتقل کرنے کی سفارش کرتی ہے، جس سے حالت والے ویجیٹس کی تعداد کم سے کم ہوتی ہے۔

StatelessWidget کی اندرونی ساخت

اندرونی طور پر، StatelessWidget ایک تجریدی کلاس ہے جس میں ایک تجریدی طریقہ build اور ایک جامد طریقہ canUpdate ہے، جو چیک کرتا ہے کہ کیا موجودہ عنصر کو اسی قسم اور اسی key والے نئے ویجیٹ سے اپ ڈیٹ کیا جا سکتا ہے۔ اگر runtimeType اور key مماثل ہوں، Flutter نیا عنصر بنانے کے بجائے موجودہ عنصر کو اپ ڈیٹ کرتا ہے — یہ موثر رینڈرنگ کی بنیاد ہے۔

StatelessWidget کی ناقابل تغیریت

ناقابل تغیریت (Immutability) StatelessWidget کی ایک اہم خصوصیت ہے جو اسے StatefulWidget سے ممتاز کرتی ہے۔ StatelessWidget کے تمام فیلڈز کو final موڈیفائر کے ساتھ قرار دیا جانا چاہیے، اور اقدار کنسٹرکٹر میں متعین کی جاتی ہیں۔ مثال بنانے کے بعد، کوئی بھی فیلڈ تبدیل نہیں کیا جا سکتا — یہ ضمانت دیتا ہے کہ ویجیٹ ہمیشہ وہی ڈیٹا دکھاتا ہے جو اسے بناتے وقت منتقل کیا گیا تھا۔

یہ نقطہ نظر فنکشنل پروگرامنگ کے نمونے کی پیروی کرتا ہے، جہاں ایک فنکشن ایک ہی دلائل کے لیے ہمیشہ ایک ہی نتیجہ لوٹاتا ہے۔ Flutter رینڈرنگ کو بہتر بنانے کے لیے ناقابل تغیریت کا استعمال کرتا ہے: اگر StatelessWidget کی دو مثالوں کی ایک ہی قسم اور ایک ہی پیرامیٹرز ہوں، فریم ورک build کے نتیجے کو کیش کر سکتا ہے اور اسے دوبارہ کال نہیں کر سکتا۔ عملی طور پر، یہ بہت سے ایک جیسے عناصر والی فہرستوں میں 40% تک کارکردگی بہتری لاتا ہے۔

ناقابل تغیریت ڈیبگنگ کو بھی آسان بناتی ہے — ڈیویلپر ہمیشہ جانتا ہے کہ ویجیٹ اپنے کنسٹرکٹر کو دیکھ کر کون سا ڈیٹا دکھاتا ہے۔ حالت کو اندر سے تبدیل نہیں کیا جا سکتا، اس لیے تمام انٹرفیس تبدیلیاں نئے پیرامیٹرز کے ساتھ والد کے دوبارہ بلڈ کے ذریعے ہوتی ہیں۔

فیلڈز کے لیے ناقابل تغیریت کے قواعد

  • تمام فیلڈز — صرف final
  • کنسٹرکٹر — مستقل (const)
  • ابتدائے کے بغیر late final استعمال نہ کریں
  • قابل تغیر اشیاء (مثلاً، final کے بغیر List) منتقل نہ کریں

Dart میں کوڈ کی مثالیں

آئیے StatelessWidget کی ایک بنیادی مثال دیکھتے ہیں جو صارف کی معلومات دکھاتا ہے۔ کلاس کنسٹرکٹر کے ذریعے نام اور عمر قبول کرتی ہے اور متن اور اسٹائل کے ساتھ ایک ویجیٹ لوٹاتی ہے:

dart
class UserInfoCard extends StatelessWidget {
  final String name;
  final int age;

  const UserInfoCard({
    super.key,
    required this.name,
    required this.age,
  });

  @override
  Widget build(BuildContext context) {
    return Card(
      child: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: [
            Text('نام: $name', style: TextTheme.of(context).titleLarge),
            Text('عمر: $age', style: TextTheme.of(context).bodyMedium),
          ],
        ),
      ),
    );
  }
}

کارکردگی بہتر بنانے کے لیے const کنسٹرکٹر کے استعمال کی مثال۔ اگر والد ویجیٹ ہر build میں ایک جیسے پیرامیٹرز منتقل کرتا ہے، const Flutter کو دوبارہ بلڈ کو مکمل طور پر چھوڑنے کی اجازت دیتا ہے:

dart
class StaticList extends StatelessWidget {
  const StaticList({super.key});

  @override
  Widget build(BuildContext context) {
    return ListView(
      children: const [
        ListTile(leading: Icon(Icons.star), title: Text('آئٹم 1')),
        ListTile(leading: Icon(Icons.star), title: Text('آئٹم 2')),
        ListTile(leading: Icon(Icons.star), title: Text('آئٹم 3')),
      ],
    );
  }
}

اس مثال میں، تمام ذیلی ListTile، Icon اور Text مستقل مثالیں ہیں۔ Flutter انہیں ایک بار بناتا ہے اور ہر والد اپ ڈیٹ پر دوبارہ استعمال کرتا ہے، جو کوڑا کرکٹ جمع کرنے والے (garbage collector) پر بوجھ کو نمایاں طور پر کم کرتا ہے۔

StatelessWidget بمقابلہ StatefulWidget

StatelessWidget اور StatefulWidget کے درمیان انتخاب Flutter میں ڈیویلپمنٹ کرتے وقت ایک بنیادی تعمیراتی فیصلہ ہے۔ بنیادی فرق حالت کی موجودگی میں ہے: StatelessWidget اپنی حالت تبدیل نہیں کر سکتا، StatefulWidget کر سکتا ہے۔ تاہم، اس سے لائف سائیکل، کارکردگی اور فن تعمیر میں گہرے فرق پیدا ہوتے ہیں۔

StatefulWidget ایک علیحدہ State آبجیکٹ بناتا ہے جو پورے ویجیٹ لائف سائیکل میں موجود رہتا ہے۔ یہ initState میں ابتدائے، didChangeDependencies میں ڈیٹا سٹریمز کی سبسکرپشن اور dispose میں وسائل کی رہائی کی اجازت دیتا ہے۔ StatelessWidget ان میں سے کوئی بھی طریقہ فراہم نہیں کرتا — اس کا وجود build کال کے ساتھ شروع اور ختم ہوتا ہے۔

خصوصیتStatelessWidgetStatefulWidget
حالتنہیںہاں (State کے ذریعے)
build کالزایک بار (یا والد کی تبدیلی پر)متعدد (setState + والد)
initStateنہیںہاں
disposeنہیںہاں
const کنسٹرکٹرسفارش کردہمحدود
کارکردگیاعلیکم (State کی وجہ سے)

Google Play پر Flutter ایپلیکیشنز کے تجزیے (Flutter Team، ستمبر 2025) کے مطابق، StatelessWidget کی برتری والے منصوبے ان منصوبوں کے مقابلے میں 20-25% کم پہلی پینٹ (FP) وقت دکھاتے ہیں جہاں زیادہ تر ویجیٹس StatefulWidget ہیں۔ اس کی وجہ State آبجیکٹس بنانے اور برقرار رکھنے کے اضافی بوجھ کی عدم موجودگی ہے۔

StatelessWidget کب منتخب کریں

StatelessWidget استعمال کریں اگر ویجیٹ صرف والد سے موصول ہونے والا ڈیٹا دکھاتا ہے اور کوئی اندرونی حالت کا انتظام نہیں کرتا۔ اگر ویجیٹ کو HTTP درخواست کرنے، صارف کے ان پٹ کو ہینڈل کرنے یا سٹریم سبسکرائب کرنے کی ضرورت ہے — StatefulWidget استعمال کریں یا منطق کو بیرونی حالت کے انتظام کی پرت (Bloc، Riverpod) میں منتقل کریں۔

کارکردگی کی اصلاح

StatelessWidget کی اصلاح تین اصولوں پر مبنی ہے: const کنسٹرکٹرز، کم سے کم ویجیٹ ٹری اور کلیدوں (keys) کا صحیح استعمال۔ const کنسٹرکٹر Flutter کو کمپائل ٹائم پر ایک بار ویجیٹ بنانے اور ایپلیکیشن کی پوری زندگی میں اسے دوبارہ استعمال کرنے کی اجازت دیتا ہے۔ یہ بار بار build کالز کی ضرورت کو ختم کرتا ہے اور میموری مختص کرنے والے پر بوجھ کم کرتا ہے۔

ویجیٹ ٹری کو کم سے کم کرنا دوسرا اہم پہلو ہے۔ ہر نیسٹڈ StatelessWidget عنصر کے ٹری میں ایک سطح کا اضافہ کرتا ہے۔ Flutter کو ہر فریم میں پورے ٹری کو عبور کرنا ہوتا ہے، اس لیے ٹری جتنا گہرا ہوگا، فریم ورک کے لیے اتنا ہی زیادہ کام ہوگا۔ سادہ ویجیٹس کو ایک حسب ضرورت StatelessWidget میں یکجا کرنے کی سفارش کی جاتی ہے جہاں یہ کارکردگی کھوئے بغیر پڑھنے کی اہلیت کو بہتر بناتا ہے۔

کلیدیں (Key) تیسرا اصلاحی عنصر ہیں۔ فہرست کو دوبارہ بناتے وقت یا عناصر کی ترتیب تبدیل کرتے وقت، ایک مناسب کلید Flutter کو پرانے اور نئے عناصر کا ملاپ کرنے کی اجازت دیتی ہے، ویجیٹس کی دوبارہ تخلیق سے بچتے ہوئے۔ StatelessWidget کے لیے، منفرد ڈیٹا شناخت کنندگان پر مبنی ValueKey یا ObjectKey استعمال کرنا کافی ہے۔

const اور کارکردگی

StatelessWidget کنسٹرکٹر میں const کا استعمال سب سے زیادہ کارکردگی فائدہ دیتا ہے جب ویجیٹ فہرستوں یا دہرائے جانے والے ڈھانچوں میں بار بار استعمال کیا جاتا ہے۔ Flutter نئے ویجیٹ کا موجودہ Element سے موازنہ کرتا ہے اور، اگر قسم اور کلید مماثل ہوں، canUpdate کال کرتا ہے۔ ایک جیسے پیرامیٹرز والے const ویجیٹس کے لیے، Flutter کیش شدہ نتیجہ استعمال کرتے ہوئے build کال کو مکمل طور پر چھوڑ دیتا ہے۔

عام غلطیاں

پہلی عام غلطی StatelessWidget کو وہاں استعمال کرنے کی کوشش کرنا ہے جہاں غیر متزامن اپ ڈیٹس ضروری ہوں۔ ڈیویلپر بعض اوقات StatelessWidget کنسٹرکٹر میں HTTP درخواست رکھ دیتے ہیں، امید کرتے ہیں کہ تخلیق پر ڈیٹا لوڈ ہو جائے گا۔ عملی طور پر، کنسٹرکٹر ہلکا ہونا چاہیے اور اس کے کوئی مضر اثرات نہیں ہونے چاہئیں۔ غیر متزامن کارروائیاں StatefulWidget.initState یا بیرونی خدمات میں کی جانی چاہئیں۔

دوسری عام غلطی build طریقہ کے اندر بھاری حسابات بنانا ہے۔ چونکہ build کو بار بار کال کیا جا سکتا ہے (StatelessWidget کے لیے بھی — جب والد دوبارہ بلڈ کرتا ہے)، کوئی بھی پیچیدہ حساب، کیشنگ کے بغیر MediaQuery.of(context) کالز یا build کے اندر نئی اشیاء بنانا کارکردگی کو کم کرتا ہے۔ حل یہ ہے کہ حسابات کو یادداشت (memoization) کے ساتھ علیحدہ طریقوں میں منتقل کیا جائے یا const فیکٹریز استعمال کی جائیں۔

تیسری غلطی ایک StatelessWidget میں const کنسٹرکٹر کی عدم موجودگی ہے جس میں ہو سکتا تھا۔ اگر ویجیٹ const قرار نہیں دیا گیا، Flutter ہر والد build پر ایک نیا instance بناتا ہے، چاہے پیرامیٹرز تبدیل نہ ہوئے ہوں۔ اس سے ضرورت سے زیادہ میموری کی کھپت اور کوڑا کرکٹ جمع کرنے والے کا اضافی کام ہوتا ہے۔

StatelessWidget میں غلطیوں سے کیسے بچیں

  • ہمیشہ کنسٹرکٹر کو const قرار دیں جب تک کہ ایسا نہ کرنے کی کوئی وجہ نہ ہو
  • StatelessWidget کے اندر غیر متزامن کارروائیاں نہ کریں
  • build کے اندر نئی اشیاء نہ بنائیں — انہیں کلاس فیلڈز میں منتقل کریں
  • متحرک فہرستوں میں ویجیٹس کے لیے Key استعمال کریں
  • StatefulWidget بنانے سے پہلے چیک کریں کہ آیا ویجیٹ StatelessWidget ہو سکتا ہے

اکثر پوچھے گئے سوالات

StatelessWidget اور StatefulWidget میں کیا فرق ہے؟

StatelessWidget تخلیق کے بعد اپنی حالت تبدیل نہیں کر سکتا — یہ صرف کنسٹرکٹر کے ذریعے منتقل کردہ ڈیٹا دکھاتا ہے۔ StatefulWidget ایک علیحدہ State آبجیکٹ بناتا ہے جو setState کے ذریعے تبدیل ہو سکتا ہے، اس میں لائف سائیکل کے طریقے ہوتے ہیں اور یہ غیر متزامن UI اپ ڈیٹس کی اجازت دیتا ہے۔

کیا StatelessWidget کو اپ ڈیٹ کیا جا سکتا ہے؟

ہاں، اگر والد ویجیٹ دوبارہ بلڈ کرتا ہے اور نئے پیرامیٹرز منتقل کرتا ہے۔ StatelessWidget خود بخود اپ ڈیٹ نہیں ہوتا، لیکن والد کے ذریعے نئے ڈیٹا کے ساتھ دوبارہ بنایا جا سکتا ہے۔ Flutter build کو دوبارہ کال کرنے کا فیصلہ کرنے کے لیے runtimeType اور Key کا موازنہ کرتا ہے۔

StatelessWidget میں const کنسٹرکٹر کیوں ضروری ہے؟

const Flutter کو کمپائل ٹائم پر ویجیٹ مثال بنانے اور اسے کیش کرنے کی اجازت دیتا ہے۔ اگر دو const ویجیٹس کے ایک جیسے پیرامیٹرز ہوں، Flutter ایک عنصر کو دوبارہ استعمال کرتا ہے، build کال کو مکمل طور پر چھوڑ دیتا ہے۔ یہ فہرستوں اور دہرائے جانے والے ڈھانچوں میں کارکردگی فائدہ دیتا ہے۔

اگر StatelessWidget کے پاس const کنسٹرکٹر نہ ہو تو کیا ہوتا ہے؟

Flutter ہر والد build پر ایک نیا مثال بنائے گا، چاہے پیرامیٹرز تبدیل نہ ہوئے ہوں۔ اس سے میموری مختص کرنے والے اور کوڑا کرکٹ جمع کرنے والے پر بوجھ بڑھتا ہے، اور ذیلی ویجیٹس کی غیر ضروری دوبارہ تخلیق بھی ہو سکتی ہے۔

ایک ایپلیکیشن میں کتنے StatelessWidget ہو سکتے ہیں؟

کوئی حد نہیں ہے۔ ایک عام Flutter ایپلیکیشن میں، StatelessWidget تمام ویجیٹس کا 50-80% بناتا ہے۔ جتنے زیادہ StatelessWidget، کارکردگی اتنی ہی زیادہ پیش قیاسی اور فن تعمیر اتنا ہی آسان۔ Flutter ایک ہی ٹری میں ہزاروں StatelessWidget کے ساتھ موثر کام کے لیے موزوں ہے۔

خلاصہ

  • StatelessWidget — جامع مواد دکھانے کے لیے Flutter کا بنیادی تعمیراتی بلاک، جس میں کوئی اندرونی حالت نہیں ہوتی
  • build method — StatelessWidget کا واحد تجریدی طریقہ، ویجیٹ کے ٹری میں داخل ہونے یا والد کے پیرامیٹرز تبدیل کرنے پر کال کیا جاتا ہے
  • ناقابل تغیریت — StatelessWidget کے تمام فیلڈز final قرار دیے جاتے ہیں اور تخلیق کے بعد تبدیل نہیں کیے جا سکتے، پیش قیاسی نمائش کو یقینی بناتے ہوئے
  • const کنسٹرکٹر — ایک اہم اصلاحی طریقہ کار جو Flutter کو ویجیٹ کیش کرنے اور پیرامیٹرز کے مماثل ہونے پر build کال کو مکمل طور پر چھوڑنے کی اجازت دیتا ہے
  • کارکردگی — StatelessWidget StatefulWidget کے مقابلے میں کم اضافی بوجھ پیدا کرتا ہے، کیونکہ اسے State آبجیکٹ اور لائف سائیکل کے انتظام کی ضرورت نہیں ہوتی
  • تناسب — پروجیکٹ میں 50-80% StatelessWidget کا ہدف رکھنے کی سفارش کی جاتی ہے، حالت کو بیرونی تہوں (Riverpod، Bloc) میں منتقل کرکے اور اسے ٹری میں اوپر اٹھا کر
  • انتخاب کا قاعدہ — اگر کوئی ویجیٹ StatelessWidget ہو سکتا ہے، تو اسے StatelessWidget ہونا چاہیے۔ StatefulWidget — صرف جب حالت ناگزیر ہو

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں