Jonny Borges
Committed by GitHub

Merge pull request #862 from UsamaSarwar/master

Urdu (Pakistan) Version
1 ![](https://raw.githubusercontent.com/jonataslaw/getx-community/master/get.png) 1 ![](https://raw.githubusercontent.com/jonataslaw/getx-community/master/get.png)
2 2
3 -*Idiomas: Español (este archivo), [Lengua china](README.zh-cn.md), [Inglés](README.md), [Portugués de Brasil](README.pt-br.md), [Ruso](README.ru.md), [Polaco](README.pl.md), [Coreano](README.ko-kr.md).* 3 +*Idiomas: Español (este archivo), [Urdu](README.ur-PK.md), [Lengua china](README.zh-cn.md), [Inglés](README.md), [Portugués de Brasil](README.pt-br.md), [Ruso](README.ru.md), [Polaco](README.pl.md), [Coreano](README.ko-kr.md).*
4 4
5 [![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get) 5 [![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get)
6 ![building](https://github.com/jonataslaw/get/workflows/build/badge.svg) 6 ![building](https://github.com/jonataslaw/get/workflows/build/badge.svg)
1 ![](https://raw.githubusercontent.com/jonataslaw/getx-community/master/get.png) 1 ![](https://raw.githubusercontent.com/jonataslaw/getx-community/master/get.png)
2 2
3 -**언어: [영어](README.md), [중국어](README.zh-cn.md), [브라질 포르투칼어](README.pt-br.md), [스페인어](README-es.md), [러시아어](README.ru.md), [폴란드어](README.pl.md), 한국어(이파일).** 3 +**언어: [우르두어](README.ur-PK.md), [영어](README.md), [중국어](README.zh-cn.md), [브라질 포르투칼어](README.pt-br.md), [스페인어](README-es.md), [러시아어](README.ru.md), [폴란드어](README.pl.md), 한국어(이파일).**
4 4
5 [![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get) 5 [![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get)
6 [![likes](https://badges.bar/get/likes)](https://pub.dev/packages/get/score) 6 [![likes](https://badges.bar/get/likes)](https://pub.dev/packages/get/score)
1 ![](https://raw.githubusercontent.com/jonataslaw/getx-community/master/get.png) 1 ![](https://raw.githubusercontent.com/jonataslaw/getx-community/master/get.png)
2 2
3 -**Languages: English (this file), [Chinese](README.zh-cn.md), [Brazilian Portuguese](README.pt-br.md), [Spanish](README-es.md), [Russian](README.ru.md), [Polish](README.pl.md), [Korean](README.ko-kr.md).** 3 +**Languages: English (this file), [Urdu](README.ur-PK.md), [Chinese](README.zh-cn.md), [Brazilian Portuguese](README.pt-br.md), [Spanish](README-es.md), [Russian](README.ru.md), [Polish](README.pl.md), [Korean](README.ko-kr.md).**
4 4
5 [![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get) 5 [![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get)
6 [![likes](https://badges.bar/get/likes)](https://pub.dev/packages/get/score) 6 [![likes](https://badges.bar/get/likes)](https://pub.dev/packages/get/score)
1 ![](https://raw.githubusercontent.com/jonataslaw/getx-community/master/get.png) 1 ![](https://raw.githubusercontent.com/jonataslaw/getx-community/master/get.png)
2 2
3 -*Languages: [English](README.md), [Język chiński](README.zh-cn.md), [Brazilian Portuguese](README.pt-br.md), [Spanish](README-es.md), [Russian](README.ru.md), Polish (Jesteś tu), [Koreański](README.ko-kr.md).* 3 +*Languages: [English](README.md), [Urdu](README.ur-PK.md), [Język chiński](README.zh-cn.md), [Brazilian Portuguese](README.pt-br.md), [Spanish](README-es.md), [Russian](README.ru.md), Polish (Jesteś tu), [Koreański](README.ko-kr.md).*
4 4
5 [![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get) 5 [![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get)
6 ![building](https://github.com/jonataslaw/get/workflows/build/badge.svg) 6 ![building](https://github.com/jonataslaw/get/workflows/build/badge.svg)
1 ![](https://raw.githubusercontent.com/jonataslaw/getx-community/master/get.png) 1 ![](https://raw.githubusercontent.com/jonataslaw/getx-community/master/get.png)
2 2
3 -*Idiomas: [Inglês](README.md), [Chinês](README.zh-cn.md), Português Brasileiro (este arquivo), [Espanhol](README-es.md), [Russo](README.ru.md), [Polonês](README.pl.md), [Coreana](README.ko-kr.md).* 3 +*Idiomas: [Inglês](README.md), [Urdu](README.ur-PK.md), [Chinês](README.zh-cn.md), Português Brasileiro (este arquivo), [Espanhol](README-es.md), [Russo](README.ru.md), [Polonês](README.pl.md), [Coreana](README.ko-kr.md).*
4 4
5 [![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get) 5 [![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get)
6 ![building](https://github.com/jonataslaw/get/workflows/build/badge.svg) 6 ![building](https://github.com/jonataslaw/get/workflows/build/badge.svg)
1 ![](https://raw.githubusercontent.com/jonataslaw/getx-community/master/get.png) 1 ![](https://raw.githubusercontent.com/jonataslaw/getx-community/master/get.png)
2 2
3 -_Языки: Русский (этот файл), [Английский](README.md), [Китайский](README.zh-cn.md), [Бразильский Португальский](README.pt-br.md), [Испанский](README-es.md), [Польский](README.pl.md), [Kорейский](README.ko-kr.md)._ 3 +_Языки: Русский (этот файл), [урду](README.ur-PK.md), [Английский](README.md), [Китайский](README.zh-cn.md), [Бразильский Португальский](README.pt-br.md), [Испанский](README-es.md), [Польский](README.pl.md), [Kорейский](README.ko-kr.md)._
4 4
5 [![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get) 5 [![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get)
6 ![building](https://github.com/jonataslaw/get/workflows/build/badge.svg) 6 ![building](https://github.com/jonataslaw/get/workflows/build/badge.svg)
  1 +![](https://raw.githubusercontent.com/jonataslaw/getx-community/master/get.png)
  2 +
  3 +**🌎 اردو ( Selected ✔) [| انگریزی |](README.md) [چینی |](README.zh-cn.md) [برازیلی پرتگالی |](README.pt-br.md) [ہسپانوی |](README-es.md) [روسی |](README.ru.md) [پولش |](README.pl.md) [کورین |](README.ko-kr.md)**
  4 +
  5 +[![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get)
  6 +[![likes](https://badges.bar/get/likes)](https://pub.dev/packages/get/score)
  7 +![building](https://github.com/jonataslaw/get/workflows/build/badge.svg)
  8 +[![style: effective dart](https://img.shields.io/badge/style-effective_dart-40c4ff.svg)](https://pub.dev/packages/effective_dart)
  9 +[![Discord Shield](https://img.shields.io/discord/722900883784073290.svg?logo=discord)](https://discord.com/invite/9Hpt99N)
  10 +[![Get on Slack](https://img.shields.io/badge/slack-join-orange.svg)](https://communityinviter.com/apps/getxworkspace/getx)
  11 +[![Telegram](https://img.shields.io/badge/chat-on%20Telegram-blue.svg)](https://t.me/joinchat/PhdbJRmsZNpAqSLJL6bH7g)
  12 +<a href="https://github.com/Solido/awesome-flutter">
  13 +<img alt="Awesome Flutter" src="https://img.shields.io/badge/Awesome-Flutter-blue.svg?longCache=true&style=flat-square" />
  14 +</a>
  15 +<a href="https://www.buymeacoffee.com/jonataslaw" target="_blank"><img src="https://i.imgur.com/aV6DDA7.png" alt="Buy Me A Coffee" style="height: 41px !important;width: 174px !important; box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;" > </a>
  16 +
  17 +![](https://raw.githubusercontent.com/jonataslaw/getx-community/master/getx.png)
  18 +
  19 +- [تعارف](#تعارف)
  20 +- [انسٹال](#انسٹال)
  21 +- [کاؤنٹرایپ](#کاؤنٹرایپ)
  22 +- [تین ستون](#تین-ستون)
  23 + - [اسٹیٹ مینجمنٹ](#اسٹیٹ-مینجمنٹ)
  24 + - [ری ایکٹو اسٹیٹ منیجر](#ری-ایکٹو-اسٹیٹ-منیجر)
  25 + - [اسٹیٹ مینجمنٹ کے بارے میں مزید تفصیلات](#اسٹیٹ-مینجمنٹ-کے-بارے-میں-مزید-تفصیلات)
  26 + - [روٹ مینجمنٹ](#روٹ-مینجمنٹ)
  27 + - [روٹ مینجمنٹ کے بارے میں مزید تفصیلات](#روٹ-مینجمنٹ-کے-بارے-میں-مزید-تفصیلات)
  28 + - [انحصار کا انتظام](#انحصار-کا-انتظام)
  29 + - [انحصار کے انتظام کے بارے میں مزید تفصیلات](#انحصار-کے-انتظام-کے-بارے-میں-مزید-تفصیلات)
  30 +- [استعمال](#استعمال)
  31 + - [عالمگیریت](#عالمگیریت)
  32 + - [ترجمہ](#ترجمہ)
  33 + - [ترجمہ کا استعمال](#ترجمہ-کا-استعمال)
  34 + - [مقامی](#مقامی)
  35 + - [مقام کی تبدیلی](#مقام-کی-تبدیلی)
  36 + - [سسٹم لوکیشن](#سسٹم-لوکیشن)
  37 + - [تھیم کی تبدیلی](#تھیم-کی-تبدیلی)
  38 + - [رابطے کا قیام](#رابطے-کا-قیام)
  39 + - [ڈیفالٹ کنکشن کا قیام](#ڈیفالٹ-کنکشن-کا-قیام)
  40 + - [خود سے رابطے کا قیام](#خود-سے-رابطے-کا-قیام)
  41 + - [گیٹ پیج مڈل ویئر](#گیٹ-پیج-مڈل-ویئر)
  42 + - [ترجیح](#ترجیح)
  43 + - [ری ڈائریکٹ](#ری-ڈائریکٹ)
  44 + - [جب پیج کی درخواست کی جائے](#جب-پیج-کی-درخواست-کی-جائے)
  45 + - [جب پیج لوڈ ہو](#جب-پیج-لوڈ-ہو)
  46 + - [جب صفحہ تصرف ہوجائے](#جب-صفحہ-تصرف-ہوجائے)
  47 + - [دوسرے اعلی درجے کی APIs](#دوسرے-اعلی-درجے-کی-APIs)
  48 + - [اختیاری عالمی ترتیبات اور دستی تشکیلات](#اختیاری-عالمی-ترتیبات-اور-دستی-تشکیلات)
  49 + - [مقامی اسٹیٹ ویجٹ](#مقامی-اسٹیٹ-ویجٹ) -
  50 + - [ویلیو بلڈر](#ویلیو-بلڈر)
  51 + - [اوبکس ویلیو](#اوبکس-ویلیو)
  52 + - [کارآمد نکات](#کارآمد-نکات)
  53 + - [گیٹ ویو](#گیٹ-ویو)
  54 + - [گیٹ ویجٹ](#گیٹ-ویجٹ)
  55 + - [گیٹکس سروس](#گیٹکس-سروس)
  56 +- [پچھلے ورژن سے اہم تبدیلیاں](#پچھلے-ورژن-سے-اہم-تبدیلیاں)
  57 +- [گیٹکس کیوں؟](#گیٹکس-کیوں؟)
  58 +- [سماجی خدمات](#سماجی-خدمات)
  59 + - [کمیونٹی چینلز](#کمیونٹی-چینلز)
  60 + - [کس طرح شراکت کریں](#کس-طرح-شراکت-کریں)
  61 + - [مضامین اور ویڈیوز](#مضامین-اور-ویڈیوز)
  62 +
  63 +# تعارف
  64 +
  65 +گیٹ ایکس اسٹیٹ مینجمنٹ کے لئے ایک ہلکا پھلکا اور طاقتور حل ہے۔ یہ تیز اور عملی انداز میں اعلی کارکردگی والی اسٹسٹ مینجمنٹ ، ذہین انحصار انجکشن ، اور روٹ مینجمنٹ کو یکجا کرتا ہے۔ گیٹ ایکس کے 3 بنیادی اصول ہیں ، اس کا مطلب یہ ہے کہ لائبریری میں موجود تمام وسائل کی ترجیح یہی ہے: **پروڈکٹیوٹی, کارکردگی اور تنظیم**
  66 +
  67 + **پروڈکٹیوٹی :** گیٹ ایکس کارکردگی اور وسائل کی کم سے کم کھپت پر مرکوز ہے۔ گیٹ ایکس اسٹریمز یا چینج نوٹیفائر استعمال نہیں کرتا ہے۔
  68 +
  69 + **کارکردگی :** گیٹ ایکس ایک آسان اور خوشگوار ترکیب استعمال کرتا ہے۔ اس سے کوئی فرق نہیں پڑتا ہے کہ آپ کیا کرنا چاہتے ہیں ، گیٹ-ایکس کے ساتھ ہمیشہ ایک آسان راستہ رہتا ہے۔ اس سے کوڈنگ کے کئی گھنٹوں کی بچت ہوگی اور یہ آپ کی ایپلیکیشن فراہم کرنے والی زیادہ سے زیادہ کارکردگی کو نکال دے گی۔ عام طور پر ، ڈویلپر میموری سے کنٹرولرز کو ہٹانے سے متعلق رہنا چاہئے۔ گیٹ-ایکس کے ساتھ یہ ضروری نہیں ہے ، کیونکہ وسائل میموری سے حذف ہوجاتے ہیں جب وہ بطور ڈیفالٹ استعمال نہیں ہوتے ہیں۔ اگر آپ اسے یاد میں رکھنا چاہتے ہیں تو ، آپ کو اپنی انحصار میں واضح طور پر "مستقل: سچ" کا اعلان کرنا ہوگا۔ اس طرح ، وقت کی بچت کے علاوہ ، آپ کو میموری پر غیر ضروری انحصار کرنے کا خطرہ بھی کم ہوتا ہے۔ انحصار لوڈنگ ڈیفالٹ کے لحاظ سے بھی سست ہے۔
  70 +
  71 + **تنظیم :** گیٹ-ایکس کی مدد سے منظر ، نمائش کی منطق ، کاروباری منطق ، انحصار انجیکشن ، اور نیویگیشن کی مجموعی ڈوپولنگ کی اجازت دیتا ہے۔ راستوں کے مابین تشریف لے جانے کے لئے سیاق و سباق کی ضرورت نہیں ہے ، لہذا ، آپ اس کے لئے ویجیٹ ٹری (ویژنائزیشن) پر منحصر نہیں ہیں۔ وراثت میں ملنے والے ویجیٹ کے ذریعے اپنے کنٹرولرز / بلاکس تک رسائی حاصل کرنے کے لئے سیاق و سباق کی ضرورت نہیں ہے ، لہذا آپ اپنی پریزنٹیشن منطق اور کاروباری منطق کو اپنی نظریاتی پرت سے مکمل طور پر ڈوپل کرتے ہیں۔ آپ کو متعدد فراہم کنندگان کے ذریعہ اپنے ویجیٹ ٹری میں اپنے کنٹرولرز / ماڈلز / بلاکس کی کلاسیں انجیکشن کرنے کی ضرورت نہیں ہے ، کیونکہ یہ گیٹ ایکس اپنی انحصار انجیکشن کی خصوصیت استعمال کرتا ہے ، جس سے ڈی آئی کو اس کے نظارے کو مکمل طور پر خارج کردیتی ہے۔ گیٹ-ایکس کے ذریعے آپ جانتے ہو کہ اپنی درخواست کی ہر خصوصیت کو کہاں تلاش کرنا ہے ، بطور ڈیفالٹ صاف ستھرا۔ بحالی کی سہولت فراہم کرنے کے علاوہ ، یہ ماڈیولوں کی شیئرنگ کو بھی یقینی بناتا ہے ، ایسی کوئی چیز جو اس وقت تک پھڑپھڑ پھینک کر ناقابل فہم تھی ، اور کچھ مکمل طور پر ممکن تھا۔
  72 +بی ایل او سی پھڑپھڑا میں کوڈ کو منظم کرنے کا نقطہ آغاز تھا ، یہ کاروباری منطق کو تصور سے الگ کرتا ہے۔ گیٹ ایکس اس کا فطری ارتقا ہے ، جس سے نہ صرف کاروباری منطق کو الگ کیا جائے بلکہ پیش کش کی منطق بھی۔ انحصار اور راستوں کا بونس انجیکشن بھی ڈوپل ہوچکا ہے ، اور ڈیٹا لیئر ان سب سے باہر ہے۔ آپ جانتے ہیں کہ سب کچھ کہاں ہے ، اور یہ سب کچھ ہیلو دنیا کی تعمیر سے زیادہ آسان طریقے سے ہے۔ گیٹ-ایکس ، فلٹر ایس ڈی کے کے ساتھ اعلی کارکردگی کی ایپلی کیشنز کی تعمیر کا آسان ترین ، عملی اور اسکیل ایبل طریقہ ہے ، جس کے ارد گرد ایک بہت بڑا ماحولیاتی نظام ہے جو کامل کے ساتھ مل کر کام کرتا ہے ، ابتدائی افراد کے لئے آسان اور ماہرین کے لئے درست ہے۔ یہ محفوظ ، مستحکم ، تازہ ترین ہے ، اور APIs کی ایک بہت بڑی رینج پیش کرتا ہے جو پہلے سے طے شدہ فلوٹر SDK پر موجود نہیں ہے۔
  73 +
  74 +گیٹ ایکس پھولا ہوا نہیں ہے۔ اس میں بہت ساری خصوصیات ہیں جو آپ کو کسی بھی چیز کی فکر کیے بغیر پروگرامنگ شروع کرنے کی اجازت دیتی ہیں ، لیکن ان خصوصیات میں سے ہر ایک الگ الگ کنٹینر میں ہے ، اور صرف استعمال کے بعد شروع کی گئی ہے۔ اگر آپ صرف اسٹیٹ مینجمنٹ کا استعمال کرتے ہیں تو صرف اسٹیٹ مینجمنٹ مرتب کی جائے گی۔ اگر آپ صرف راستے ہی استعمال کرتے ہیں تو ، اسٹیٹ مینجمنٹ کی طرف سے کوئی بھی چیز مرتب نہیں کی جائے گی۔
  75 +
  76 +گیٹ ایکس میں ایک بہت بڑا ماحولیاتی نظام ، ایک بڑی برادری ، بڑی تعداد میں تعاون کار موجود ہے ، اور جب تک پھڑپھڑ موجود ہے اس کو برقرار رکھا جائے گا۔ گیٹ ایکس بھی اسی کوڈ کے ساتھ اینڈروئیڈ ، آئی او ایس ، ویب ، میک ، لینکس ، ونڈوز اور اپنے سرور پر چلنے کے قابل ہے۔
  77 +**یہ ممکن ہے کہ اپنے پس منظر میں فرنٹ اینڈ پر تیار کردہ اپنے کوڈ کو پوری طرح سے استعمال کریں [گیٹ ایکس سرور](https://github.com/jonataslaw/get_server)**.
  78 +
  79 +**اس کے علاوہ ، سرور پر اور سامنے والے اختتام پر ، پوری ترقی کا عمل مکمل طور پر خودکار ہوسکتا ہے [CLI حاصل کریں](https://github.com/jonataslaw/get_cli)**.
  80 +
  81 +**اس کے علاوہ ، آپ کی پیداوری کو مزید بڑھانے کے لئے ، ہمارے پاس ہے
  82 +[VSCode](https://marketplace.visualstudio.com/items?itemName=get-snippets.get-snippets) اور [Android Studio/Intellij](https://plugins.jetbrains.com/plugin/14975-getx-snippets)**
  83 +
  84 +# انسٹال
  85 +کوڈ میں گیٹ ایکس کی تنصیب
  86 +```yaml
  87 +# pubspec.yaml
  88 +dependencies:
  89 + get:
  90 +```
  91 +ان فائلوں میں امپورٹ کریں جو استعمال ہوں گی
  92 +```dart
  93 +import 'package:get/get.dart';
  94 +```
  95 +
  96 +# کاؤنٹرایپ
  97 +
  98 +گیٹ-ایکس کی طاقت کو ظاہر کرنے کے ل I ، میں یہ ظاہر کروں گا کہ کس طرح ہر کلک کے ساتھ "کاؤنٹر" بنانا ہے ، کس طرح صفحات کے مابین تبادلہ کرنا اور اسکرینوں کے درمیان اسٹسٹ کو مشترکہ انداز میں بانٹنا ، کاروباری منطق کو صرف نظر سے الگ کرنا ، 26 لائنز کوڈ شامل تبصرے۔
  99 +
  100 +- پہلا قدم :
  101 + اپنے میٹریل ایپ سے پہلے "گیٹ" شامل کریں ، اسے گیٹ میٹریئل ایپ میں تبدیل کریں
  102 +
  103 +```dart
  104 +void main() => runApp(GetMaterialApp(home: Home()));
  105 +```
  106 +
  107 +نوٹ: اس سے مٹیریل ایپ میں ترمیم نہیں ہوتی ، گیٹ میٹیرال ایپ کوئی ترمیم شدہ میٹریل ایپ نہیں ہے ، یہ ایک کنفیگریڈ ویجیٹ ہے ، جس میں بطور سی سی فلڈ میٹریل ایپ ہے۔ آپ اسے دستی طور پر تشکیل دے سکتے ہیں ، لیکن یہ یقینی طور پر ضروری نہیں ہے۔ گیٹ میٹریئل ایپ راستوں کو تخلیق کرے گی ، انہیں انجیکشن دے گی ، ترجمہ انجیکشن کرے گی ، روٹ نیویگیشن کے لئے آپ کی ضرورت کی ہر چیز کو انجیکشن دے گی۔ اگر آپ صرف ریاستی انتظام یا انحصار کے انتظام کے لئے گیٹیکس کا استعمال کرتے ہیں تو ، گیٹ میٹریئل ایپ کو استعمال کرنے کی ضرورت نہیں ہے۔ گیٹ میٹیرال ایپ راستوں ، سنیکبارز ، عالمگیریت ، نچلی شیٹس ، مکالموں ، اور روٹس سے متعلق اعلی سطحی اپس اور سیاق و سباق کی عدم موجودگی کے لئے ضروری ہے۔
  108 +یہ اقدام صرف اس صورت میں ضروری ہے اگر آپ روٹ مینجمنٹ کا استعمال کریں گے (`Get.to()`, `Get.back()`). اگر آپ اسے استعمال نہیں کریں گے تو پھر ضروری نہیں ہے کہ قدم 1 کریں
  109 +
  110 +- دوسرا مرحلہ :
  111 + اپنی کاروباری منطق کلاس بنائیں اور اس کے اندر تمام متغیرات ، طریقے اور کنٹرولر رکھیں۔
  112 + کا استعمال کرتے ہوئے کسی بھی متغیر کو قابل مشاہدہ کرسکتے ہیں ".obs".
  113 +
  114 +```dart
  115 +class Controller extends GetxController{
  116 + var count = 0.obs;
  117 + increment() => count++;
  118 +}
  119 +```
  120 +
  121 +- تیسرا قدم :
  122 + اپنا نظارہ بنائیں ، اسٹیٹ لیس ویجیٹ استعمال کریں اور کچھ رام کو بچائیں ، گیٹ-ایکس کی مدد سے آپ کو اب اسٹیٹ فل ویجٹ استعمال کرنے کی ضرورت نہیں ہوگی۔
  123 +
  124 +```dart
  125 +class Home extends StatelessWidget {
  126 +
  127 + @override
  128 + Widget build(context) {
  129 + // آپ کی کلاس کا آغاز
  130 + // Instantiate your class using Get.put() to make it available for all "child" routes there.
  131 + final Controller c = Get.put(Controller());
  132 +
  133 + return Scaffold(
  134 + // Use Obx(()=> to update Text() whenever count is changed.
  135 + appBar: AppBar(title: Obx(() => Text("Clicks: ${c.count}"))),
  136 +
  137 + // Replace the 8 lines Navigator.push by a simple Get.to(). You don't need context
  138 + body: Center(child: RaisedButton(
  139 + child: Text("Go to Other"), onPressed: () => Get.to(Other()))),
  140 + floatingActionButton:
  141 + FloatingActionButton(child: Icon(Icons.add), onPressed: c.increment));
  142 + }
  143 +}
  144 +
  145 +class Other extends StatelessWidget {
  146 + // You can ask Get to find a Controller that is being used by another page and redirect you to it.
  147 + final Controller c = Get.find();
  148 +
  149 + @override
  150 + Widget build(context){
  151 + // Access the updated count variable
  152 + return Scaffold(body: Center(child: Text("${c.count}")));
  153 + }
  154 +}
  155 +```
  156 +
  157 +نتیجہ
  158 +![](https://raw.githubusercontent.com/jonataslaw/getx-community/master/counter-app-gif.gif)
  159 +یہ ایک سادہ پروجیکٹ ہے لیکن اس سے پہلے ہی یہ واضح ہوجاتا ہے کہ گیٹ کتنا طاقتور ہے۔ جیسے جیسے آپ کا پروجیکٹ بڑھتا جائے گا ، یہ فرق مزید نمایاں ہوتا جائے گا۔
  160 +گیٹ کو ٹیموں کے ساتھ کام کرنے کے لئے ڈیزائن کیا گیا تھا ، لیکن اس سے ایک فرد ڈویلپر کا کام آسان ہوجاتا ہے۔
  161 +اپنی آخری تاریخ کو بہتر بنائیں ، کارکردگی کو کھونے کے بغیر وقت پر سب کچھ فراہم کریں۔ اگر آپ نے اس جملے کی نشاندہی کی ہے تو ، گیٹ-ایکس آپ کے لئے ہے!
  162 +# تین ستون
  163 +## اسٹیٹ مینجمنٹ
  164 +گیٹ کے دو مختلف مینیجر ہوتے ہیں: سادہ ریاستی مینیجر (ہم اسے گیٹ بلڈر کہیں گے) اور رد عمل کا مظاہرہ کرنے والے مینیجر (گیٹ-ایکس / اوب-ایکس)
  165 +### ری ایکٹو اسٹیٹ منیجر
  166 +ری ایکٹیو پروگرامنگ بہت سے لوگوں کو اجنبی بنا سکتا ہے کیونکہ ایسا کہا جاتا ہے کہ یہ پیچیدہ ہے۔ گیٹ ایکس نے رد عمل مندانہ پروگرامنگ کو کسی آسان چیز میں تبدیل کردیا:
  167 +- آپ کو اسٹریمکنٹرولر بنانے کی ضرورت نہیں ہوگی
  168 +- آپ کو ہر متغیر کے لئے ایک اسٹریم بلڈر بنانے کی ضرورت نہیں ہوگی
  169 +- آپ کو ہر ریاست کے لئے کلاس بنانے کی ضرورت نہیں ہوگی
  170 +- آپ کو ابتدائی قدر کے لئے گیٹ ایکس بنانے کی ضرورت نہیں ہوگی
  171 +- آپ کو کوڈ جنریٹر استعمال کرنے کی ضرورت نہیں ہوگی
  172 +
  173 +
  174 +گیٹ-ایکس کے ساتھ قابل عمل پروگرامنگ اتنا ہی آسان ہے جتنا سیٹ اسٹیٹ کے استعمال سے۔
  175 +
  176 +آئیے تصور کریں کہ آپ کے پاس متغیر ہے اور چاہتے ہیں کہ جب بھی آپ اسے تبدیل کریں ، اس کا استعمال کرنے والے تمام وجیٹس خود بخود تبدیل ہوجائیں۔
  177 +
  178 +یہ آپ کی گنتی متغیر ہے:
  179 +
  180 +```dart
  181 +var name = 'Jonatas Borges';
  182 +```
  183 +
  184 +".obs" اسے مشاہدہ کرنے کے لئے؛ آپ کو اس کے آخر میں شامل کرنے کی ضرورت ہے
  185 +
  186 +```dart
  187 +var name = 'Jonatas Borges'.obs;
  188 +```
  189 +
  190 +اور صارف کے انٹرفیس میں ، جب آپ اس نمبر کو دکھانا چاہتے ہیں اور جب بھی اس کی اہمیت بدل جاتی ہے تو اسکرین کو اپ ڈیٹ کرنا چاہتے ہیں ، صرف یہ کریں:
  191 +
  192 +```dart
  193 +Obx(() => Text("${controller.name}"));
  194 +```
  195 +
  196 +بس۔ یہ آسان ہے.
  197 +
  198 +### اسٹیٹ مینجمنٹ کے بارے میں مزید تفصیلات
  199 +
  200 +**اسٹیٹ مینجمنٹ کی مزید گہرائی سے وضاحت ملاحظہ کریں [یہاں](./documentation/en_US/state_management.md). وہاں آپ مزید مثالیں دیکھیں گے اور آسان ریاستی مینیجر اور رد عمل ریاست کے مینیجر کے مابین بھی فرق**
  201 +
  202 +آپ کو گیٹ ایکس پاور کا ایک اچھا خیال ملے گا۔
  203 +
  204 +## روٹ مینجمنٹ
  205 +اگر آپ سیاق و سباق کے بغیر راستے / سنیکبارز / مکالمے / بوتل شیٹ استعمال کرنے جارہے ہیں تو گیٹ ایکس آپ کے لئے بھی بہترین ہے ، بس اسے دیکھیں:
  206 +اپنے میٹریل ایپ سے پہلے "گیٹ" شامل کریں ، اسے گیٹ میٹریئل ایپ میں تبدیل کریں
  207 +```dart
  208 +GetMaterialApp( // Before: MaterialApp(
  209 + home: MyHome(),
  210 +)
  211 +```
  212 +
  213 +نئی اسکرین پر جائیں:
  214 +
  215 +```dart
  216 +
  217 +Get.to(NextScreen());
  218 +```
  219 +
  220 +نام کے ساتھ نئی اسکرین پر جائیں۔ نامزد راستوں کے بارے میں مزید تفصیلات دیکھیں [یہاں](./documentation/en_US/route_management.md#navigation-with-named-routes)
  221 +
  222 +```dart
  223 +
  224 +Get.toNamed('/details');
  225 +```
  226 +
  227 +سنیک بار ، ڈائیلاگ ، نیچے شیٹ کو بند کریں
  228 +Navigator.pop(context);
  229 +
  230 +```dart
  231 +Get.back();
  232 +```
  233 +
  234 +اگلی اسکرین پر جانے کے لئے اور پچھلی اسکرین پر واپس جانے کا کوئی آپشن نہیں (اسپلش اسکرین ، لاگ ان اسکرینوں وغیرہ میں استعمال کیلئے)
  235 +
  236 +```dart
  237 +Get.off(NextScreen());
  238 +```
  239 +
  240 +اگلی سکرین پر جانے اور پچھلے سبھی راستوں کو منسوخ کرنے کے لئے (شاپنگ کارٹس ، پولز اور ٹیسٹوں میں کارآمد)
  241 +
  242 +```dart
  243 +Get.offAll(NextScreen());
  244 +```
  245 +
  246 +غور کیا کہ آپ کو ان میں سے کوئی بھی کام کرنے کے لئے سیاق و سباق کا استعمال نہیں کرنا پڑا؟ گیٹ روٹ مینجمنٹ کو استعمال کرنے کا سب سے بڑا فائدہ یہ ہے۔ اس کی مدد سے ، آپ اپنے کنٹرولر کلاس کے اندر ، تشویش کے بغیر ، ان تمام طریقوں کو انجام دے سکتے ہیں۔
  247 +
  248 +### روٹ مینجمنٹ کے بارے میں مزید تفصیلات
  249 +
  250 +**گیٹ ایکس نامی روٹ کے ساتھ کام کرتا ہے اور اپنے راستوں پر نچلی سطح کا کنٹرول بھی پیش کرتا ہے! ایک گہرائی میں دستاویزات موجود ہیں [یہاں](./documentation/en_US/route_management.md)**
  251 +
  252 +## انحصار کا انتظام
  253 +
  254 +گیٹ ایکس کے پاس ایک سادہ اور طاقتور انحصار منیجر ہے جو آپ کو اپنے بلاک یا کنٹرولر کی طرح ایک ہی کلاس کو دوبارہ حاصل کرنے کی سہولت دیتا ہے جس میں کوڈ کی صرف 1 لائنز ، کوئی فراہم کنندہ سیاق و سباق ، کوئی وراثت والا ویجٹ نہیں ہے۔
  255 +
  256 +```dart
  257 +Controller controller = Get.put(Controller()); // Rather Controller controller = Controller();
  258 +```
  259 +نوٹ: اگر آپ گیٹ اسٹیٹ منیجر استعمال کررہے ہیں تو ، اے پی آئی کی پابندیوں پر زیادہ توجہ دیں ، جس سے آپ کے قول کو اپنے کنٹرولر سے مربوط کرنے میں آسانی ہوگی۔
  260 +
  261 +آپ جس کلاس کو استعمال کررہے ہیں اس میں اپنی کلاس کو تیز کرنے کے بجائے ، آپ اسے حاصل کریں مثال کے طور پر اندر داخل کررہے ہیں ، جس سے یہ آپ کے ایپ میں دستیاب ہوگا۔
  262 +لہذا آپ اپنے کنٹرولر (یا کلاس بلاک) کو عام طور پر استعمال کرسکتے ہیں
  263 +
  264 +**اشارہ:**گیٹ ایکس انحصار کا انتظام پیکیج کے دوسرے حصوں سے گر گیا ہے ، لہذا اگر مثال کے طور پر آپ کی ایپ پہلے ہی اسٹیٹ مینیجر کو استعمال کررہی ہے (کوئی بھی ، اس سے کوئی فرق نہیں پڑتا ہے) ، آپ کو یہ سب کچھ دوبارہ لکھنے کی ضرورت نہیں ہے ، آپ اس انحصار کو استعمال کرسکتے ہیں۔
  265 +```dart
  266 +controller.fetchApi();
  267 +```
  268 +
  269 +ذرا تصور کریں کہ آپ نے متعدد راستوں سے گھوما ہوا ہے ، اور آپ کو ایک ایسے ڈیٹا کی ضرورت ہے جو آپ کے کنٹرولر میں پیچھے رہ گیا ہو ، آپ کو فراہم کنندہ یا گیٹ_یٹ کے ساتھ مل کر ایک ریاستی مینیجر کی ضرورت ہوگی ، صحیح؟ گیٹ ایکس کے ساتھ نہیں۔ آپ کو اپنے کنٹرولر کے ل "" ڈھونڈنے "کے لئے گیٹ ایکس سے پوچھنے کی ضرورت ہے ، آپ کو کسی بھی اضافی انحصار کی ضرورت نہیں ہے۔
  270 +
  271 +```dart
  272 +Controller controller = Get.find();
  273 +```
  274 +
  275 +اور پھر آپ اپنا کنٹرولر ڈیٹا دوبارہ حاصل کرنے میں کامیاب ہوجائیں گے جو وہاں واپس حاصل کیا گیا تھا
  276 +
  277 +```dart
  278 +Text(controller.textFromApi);
  279 +```
  280 +
  281 +### انحصار کے انتظام کے بارے میں مزید تفصیلات
  282 +
  283 +**انحصار کے انتظام کی مزید گہرائی سے وضاحت ملاحظہ کریں [یہاں](./documentation/en_US/dependency_management.md)**
  284 +
  285 +# استعمال
  286 +
  287 +## عالمگیریت
  288 +
  289 +### ترجمہ
  290 +
  291 +ترجمہ کو ایک آسان کلیدی قدر والے لغت کے نقشے کے طور پر رکھا جاتا ہے۔
  292 +حسب ضرورت ترجمہ شامل کرنے کے لئے ، ایک کلاس تشکیل دیں اور توسیع کریں
  293 +`Translations`
  294 +```dart
  295 +import 'package:get/get.dart';
  296 +
  297 +class Messages extends Translations {
  298 + @override
  299 + Map<String, Map<String, String>> get keys => {
  300 + 'en_US': {
  301 + 'hello': 'Hello World',
  302 + },
  303 + 'de_DE': {
  304 + 'hello': 'Hallo Welt',
  305 + }
  306 + };
  307 +}
  308 +```
  309 +
  310 +#### ترجمہ کا استعمال
  311 +
  312 +بس ضمیمہ کریں `.tr` مخصوص کی میں اور اس کی موجودہ قیمت کا استعمال کرتے ہوئے ترجمہ کیا جائے گا`Get.locale` اور `Get.fallbackLocale`.
  313 +
  314 +```dart
  315 +Text('title'.tr);
  316 +```
  317 +
  318 +### مقامی
  319 +
  320 +مقام اور ترجمے کی وضاحت کے لئے پیرامیٹرز کو `گیٹ میٹیرال ایپ` پاس کریں۔
  321 +
  322 +```dart
  323 +return GetMaterialApp(
  324 + translations: Messages(), // your translations
  325 + locale: Locale('en', 'US'), // translations will be displayed in that locale
  326 + fallbackLocale: Locale('en', 'UK'), // specify the fallback locale in case an invalid locale is selected.
  327 +);
  328 +```
  329 +
  330 +#### مقام کی تبدیلی
  331 +
  332 +لوکل کو اپ ڈیٹ کرنے کے لئے کال کریں گیٹ۔ اپ ڈیٹ لوکل (لوکل)۔ پھر ترجمے خود بخود نیا مقام استعمال کرتے ہیں۔
  333 +
  334 +```dart
  335 +var locale = Locale('en', 'US');
  336 +Get.updateLocale(locale);
  337 +```
  338 +
  339 +#### سسٹم لوکیشن
  340 +
  341 +ڈیوائس لوکل حاصل کرنے کے لئے اس لائن کو استعمال کریں
  342 +
  343 +```dart
  344 +return GetMaterialApp(
  345 + locale: Get.deviceLocale,
  346 +);
  347 +```
  348 +
  349 +## تھیم کی تبدیلی
  350 +
  351 +برائے کرم `گیٹ میٹرال ایپ` سے زیادہ کسی بھی اعلی سطح کے ویجیٹ کو اپ ڈیٹ کرنے کیلئے استعمال نہ کریں۔ اس سے ڈپلیکیٹ کیز کو متحرک کیا جاسکتا ہے۔ بہت سارے لوگ صرف اپنی ایپ کے تھیم کو تبدیل کرنے کے لئے "تھیم پیڈائزر" ویجیٹ بنانے کے پراگیتہاسک نقطہ نظر کے عادی ہیں ، اور یہ ** گیٹ ایکس ™ ** کے ساتھ یقینی طور پر ضروری نہیں ہے۔
  352 +
  353 +آپ اپنا کسٹم تھیم تشکیل دے سکتے ہیں اور اس کے لئے کسی بھی بوائلر پلیٹ کے بغیر اسے `گیٹ.چینج تھیم` میں شامل کرسکتے ہیں:
  354 +
  355 +```dart
  356 +Get.changeTheme(ThemeData.light());
  357 +```
  358 +
  359 +
  360 +اگر آپ بٹن کی طرح کوئی چیز بنانا چاہتے ہیں جو تھیم کو `آن ٹیپ میں تبدیل کردے ، تو آپ اس کے لئے دو ** گیٹ ایکس ™ ** اے پی پی کو جوڑ سکتے ہیں:
  361 +
  362 +- اے پی آئی جو چیک کرتا ہے کہ آیا گہرا `تھیم` استعمال کیا جارہا ہے۔
  363 +- اور `تھیم` کی تبدیلی ، آپ اسے صرف `آن پیسڈ` میں ڈال سکتے ہیں۔
  364 +
  365 +```dart
  366 +Get.changeTheme(Get.isDarkMode? ThemeData.light(): ThemeData.dark());
  367 +```
  368 +
  369 +جب ڈارک موڈ چالو ہوجاتا ہے ، تو وہ _ لائٹ تھیم_ میں تبدیل ہوجائے گا ، اور جب _ لائٹ تھیم_ فعال ہوجائے گا ، تو یہ _ ڈارک تھیم_ میں بدل جائے گا۔
  370 +
  371 +## رابطے کا قیام
  372 +گیٹ کنیکٹ آپ کی پیٹھ سے اپنے سامنے تک HTTP یا ویب ساکٹس کے ذریعہ مواصلت کرنے کا ایک آسان طریقہ ہے
  373 +
  374 +### ڈیفالٹ کنکشن کا قیام
  375 +آپ آرام سے گیٹ کنیکٹ کو بڑھا سکتے ہیں اور GET / POST / PUT / DELETE / SOCKET طریقوں کو اپنے ریسٹ API یا ویب ساکٹس کے ساتھ بات چیت کرسکتے ہیں۔
  376 +
  377 +```dart
  378 +class UserProvider extends GetConnect {
  379 + // Get request
  380 + Future<Response> getUser(int id) => get('http://youapi/users/$id');
  381 + // Post request
  382 + Future<Response> postUser(Map data) => post('http://youapi/users', body: data);
  383 + // Post request with File
  384 + Future<Response<CasesModel>> postCases(List<int> image) {
  385 + final form = FormData({
  386 + 'file': MultipartFile(image, filename: 'avatar.png'),
  387 + 'otherFile': MultipartFile(image, filename: 'cover.png'),
  388 + });
  389 + return post('http://youapi/users/upload', form);
  390 + }
  391 +
  392 + GetSocket userMessages() {
  393 + return socket('https://yourapi/users/socket');
  394 + }
  395 +}
  396 +```
  397 +### خود سے رابطے کا قیام
  398 +
  399 +گیٹ کنیکٹ انتہائی حسب ضرورت ہے آپ درخواست کو تبدیل کرنے والے ، جواب دہندگان کے بطور ، جواب دہندگان کی حیثیت سے ، ایک مستند کی وضاحت ، اور حتی کہ کوششوں کی تعداد بھی کرسکتے ہیں جس میں وہ خود کو مستند کرنے کی کوشش کرے گی ، اس کے علاوہ یہ ایک معیاری ڈیکوڈر کی وضاحت کے امکان کو بھی فراہم کرے گی جو تبدیل ہوجائے گی۔ آپ کی ساری درخواستیں آپ میں اضافی تشکیل کے بغیر ماڈل کرتی ہیں۔
  400 +
  401 +```dart
  402 +class HomeProvider extends GetConnect {
  403 + @override
  404 + void onInit() {
  405 + // All request will pass to jsonEncode so CasesModel.fromJson()
  406 + httpClient.defaultDecoder = CasesModel.fromJson;
  407 + httpClient.baseUrl = 'https://api.covid19api.com';
  408 + // baseUrl = 'https://api.covid19api.com'; // It define baseUrl to
  409 + // Http and websockets if used with no [httpClient] instance
  410 +
  411 + // It's will attach 'apikey' property on header from all requests
  412 + httpClient.addRequestModifier((request) {
  413 + request.headers['apikey'] = '12345678';
  414 + return request;
  415 + });
  416 +
  417 + // Even if the server sends data from the country "Brazil",
  418 + // it will never be displayed to users, because you remove
  419 + // that data from the response, even before the response is delivered
  420 + httpClient.addResponseModifier<CasesModel>((request, response) {
  421 + CasesModel model = response.body;
  422 + if (model.countries.contains('Brazil')) {
  423 + model.countries.remove('Brazilll');
  424 + }
  425 + });
  426 +
  427 + httpClient.addAuthenticator((request) async {
  428 + final response = await get("http://yourapi/token");
  429 + final token = response.body['token'];
  430 + // Set the header
  431 + request.headers['Authorization'] = "$token";
  432 + return request;
  433 + });
  434 +
  435 + //Autenticator will be called 3 times if HttpStatus is
  436 + //HttpStatus.unauthorized
  437 + httpClient.maxAuthRetries = 3;
  438 + }
  439 + }
  440 +
  441 + @override
  442 + Future<Response<CasesModel>> getCases(String path) => get(path);
  443 +}
  444 +```
  445 +
  446 +## گیٹ پیج مڈل ویئر
  447 +
  448 +گیٹ پیج کے پاس اب نئی پراپرٹی ہے جو گیٹ میڈل ویئر کی فہرست لیتی ہے اور انہیں مخصوص ترتیب میں چلاتی ہے۔
  449 +
  450 +نوٹ: جب گیٹ پیج کے مڈل ویئرز ہوں گے تو ، اس صفحے کے سبھی بچوں میں ایک جیسے مڈل ویئرز خودبخود ہوں گے۔
  451 +
  452 +### ترجیح
  453 +
  454 +مڈل ویئر کو چلانے کا آرڈر گیٹ میڈل ویئر میں ترجیحی طور پر ترتیب دیا جاسکتا ہے۔
  455 +
  456 +```dart
  457 +final middlewares = [
  458 + GetMiddleware(priority: 2),
  459 + GetMiddleware(priority: 5),
  460 + GetMiddleware(priority: 4),
  461 + GetMiddleware(priority: -8),
  462 +];
  463 +```
  464 +وہ مڈل ویئر اسی ترتیب سے چلائے جائیں گے **-8 => 2 => 4 => 5**
  465 +
  466 +### ری ڈائریکٹ
  467 +
  468 +اس فنکشن کو اس وقت کہا جائے گا جب کال والے راستے کے صفحے کی تلاش کی جا رہی ہو۔ اس کو ری ڈائریکٹ کرنے کے نتیجے میں روٹ سیٹنگز لیتے ہیں۔ یا اسے کالعدم کردیں اور کوئی ردوبدل نہیں ہوگا۔
  469 +
  470 +```dart
  471 +GetPage redirect( ) {
  472 + final authService = Get.find<AuthService>();
  473 + return authService.authed.value ? null : RouteSettings(name: '/login')
  474 +}
  475 +```
  476 +
  477 +### جب پیج کی درخواست کی جائے
  478 +
  479 +جب اس صفحے کو کچھ بھی تخلیق کرنے سے پہلے بلایا جائے گا تو اس فنکشن کو کہا جائے گا
  480 +آپ اسے صفحہ کے بارے میں کچھ تبدیل کرنے یا نیا صفحہ دینے کیلئے استعمال کرسکتے ہیں
  481 +
  482 +```dart
  483 +GetPage onPageCalled(GetPage page) {
  484 + final authService = Get.find<AuthService>();
  485 + return page.copyWith(title: 'Welcome ${authService.UserName}');
  486 +}
  487 +```
  488 +
  489 +### آنبائنڈنگ اسٹارٹ
  490 +
  491 +اس فنکشن کو بائنڈنگ شروع کرنے سے پہلے ہی کہا جائے گا۔
  492 +یہاں آپ اس صفحے کے لئے پابندیوں کو تبدیل کرسکتے ہیں۔
  493 +
  494 +```dart
  495 +List<Bindings> onBindingsStart(List<Bindings> bindings) {
  496 + final authService = Get.find<AuthService>();
  497 + if (authService.isAdmin) {
  498 + bindings.add(AdminBinding());
  499 + }
  500 + return bindings;
  501 +}
  502 +```
  503 +
  504 +### آنپیج بلڈ اسٹارٹ
  505 +
  506 +اس فنکشن کو بائنڈنگ شروع کرنے کے بعد ہی کہا جائے گا۔
  507 +یہاں آپ اس کے بعد اور پیج ویجیٹ بنانے سے پہلے پابندیوں کو تخلیق کرنے کے بعد کچھ کرسکتے ہیں۔
  508 +
  509 +```dart
  510 +GetPageBuilder onPageBuildStart(GetPageBuilder page) {
  511 + print('bindings are ready');
  512 + return page;
  513 +}
  514 +```
  515 +
  516 +### جب پیج لوڈ ہو
  517 +
  518 +اس فنکشن کو گیٹ پیج ڈاٹ پیج فنکشن کے بلانے کے ٹھیک ہی بعد میں کہا جائے گا اور آپ کو اس فنکشن کا نتیجہ پیش کرے گا۔ اور دکھایا جائے گا کہ ویجیٹ لے لو.
  519 +
  520 +### جب صفحہ تصرف ہوجائے
  521 +
  522 +اس فنکشن کو صفحے کے تمام متعلقہ اشیاء (کنٹرولرز ، آراء ، ...) کو ضائع کرنے کے بعد ہی کہا جائے گا۔
  523 +
  524 +## دوسرے اعلی درجے کی APIs
  525 +
  526 +```dart
  527 +// give the current args from currentScreen
  528 +Get.arguments
  529 +
  530 +// give name of previous route
  531 +Get.previousRoute
  532 +
  533 +// give the raw route to access for example, rawRoute.isFirst()
  534 +Get.rawRoute
  535 +
  536 +// give access to Routing API from GetObserver
  537 +Get.routing
  538 +
  539 +// check if snackbar is open
  540 +Get.isSnackbarOpen
  541 +
  542 +// check if dialog is open
  543 +Get.isDialogOpen
  544 +
  545 +// check if bottomsheet is open
  546 +Get.isBottomSheetOpen
  547 +
  548 +// remove one route.
  549 +Get.removeRoute()
  550 +
  551 +// back repeatedly until the predicate returns true.
  552 +Get.until()
  553 +
  554 +// go to next route and remove all the previous routes until the predicate returns true.
  555 +Get.offUntil()
  556 +
  557 +// go to next named route and remove all the previous routes until the predicate returns true.
  558 +Get.offNamedUntil()
  559 +
  560 +//Check in what platform the app is running
  561 +GetPlatform.isAndroid
  562 +GetPlatform.isIOS
  563 +GetPlatform.isMacOS
  564 +GetPlatform.isWindows
  565 +GetPlatform.isLinux
  566 +GetPlatform.isFuchsia
  567 +
  568 +//Check the device type
  569 +GetPlatform.isMobile
  570 +GetPlatform.isDesktop
  571 +//All platforms are supported independently in web!
  572 +//You can tell if you are running inside a browser
  573 +//on Windows, iOS, OSX, Android, etc.
  574 +GetPlatform.isWeb
  575 +
  576 +
  577 +// Equivalent to : MediaQuery.of(context).size.height,
  578 +// but immutable.
  579 +Get.height
  580 +Get.width
  581 +
  582 +// Gives the current context of the Navigator.
  583 +Get.context
  584 +
  585 +// Gives the context of the snackbar/dialog/bottomsheet in the foreground, anywhere in your code.
  586 +Get.contextOverlay
  587 +
  588 +// Note: the following methods are extensions on context. Since you
  589 +// have access to context in any place of your UI, you can use it anywhere in the UI code
  590 +
  591 +// If you need a changeable height/width (like Desktop or browser windows that can be scaled) you will need to use context.
  592 +context.width
  593 +context.height
  594 +
  595 +// Gives you the power to define half the screen, a third of it and so on.
  596 +// Useful for responsive applications.
  597 +// param dividedBy (double) optional - default: 1
  598 +// param reducedBy (double) optional - default: 0
  599 +context.heightTransformer()
  600 +context.widthTransformer()
  601 +
  602 +/// Similar to MediaQuery.of(context).size
  603 +context.mediaQuerySize()
  604 +
  605 +/// Similar to MediaQuery.of(context).padding
  606 +context.mediaQueryPadding()
  607 +
  608 +/// Similar to MediaQuery.of(context).viewPadding
  609 +context.mediaQueryViewPadding()
  610 +
  611 +/// Similar to MediaQuery.of(context).viewInsets;
  612 +context.mediaQueryViewInsets()
  613 +
  614 +/// Similar to MediaQuery.of(context).orientation;
  615 +context.orientation()
  616 +
  617 +/// Check if device is on landscape mode
  618 +context.isLandscape()
  619 +
  620 +/// Check if device is on portrait mode
  621 +context.isPortrait()
  622 +
  623 +/// Similar to MediaQuery.of(context).devicePixelRatio;
  624 +context.devicePixelRatio()
  625 +
  626 +/// Similar to MediaQuery.of(context).textScaleFactor;
  627 +context.textScaleFactor()
  628 +
  629 +/// Get the shortestSide from screen
  630 +context.mediaQueryShortestSide()
  631 +
  632 +/// True if width be larger than 800
  633 +context.showNavbar()
  634 +
  635 +/// True if the shortestSide is smaller than 600p
  636 +context.isPhone()
  637 +
  638 +/// True if the shortestSide is largest than 600p
  639 +context.isSmallTablet()
  640 +
  641 +/// True if the shortestSide is largest than 720p
  642 +context.isLargeTablet()
  643 +
  644 +/// True if the current device is Tablet
  645 +context.isTablet()
  646 +
  647 +/// اسکرین کے سائز کے مطابق <T> ایک قیمت لوٹاتا ہے
  648 +/// اس کی قیمت دے سکتے ہیں:
  649 +/// واچ: اگر مختصر ترین جگہ 300 سے چھوٹی ہے
  650 +/// موبائل: اگر مختصر ترین سائٹ 600 سے چھوٹی ہے
  651 +/// ٹیبلٹ: اگر مختصر ترین سائٹ 1200 سے چھوٹی ہے
  652 +/// ڈیسک ٹاپ: اگر چوڑائی 1200 سے زیادہ ہے
  653 +context.responsiveValue<T>()
  654 +```
  655 +
  656 +### اختیاری عالمی ترتیبات اور دستی تشکیلات
  657 +
  658 +گیٹ میٹریئل ایپ آپ کے لئے ہر چیز کو کنفیگر کرتی ہے ، لیکن اگر آپ تشکیل کرنا چاہتے ہیں تو دستی طور پر حاصل کریں۔
  659 +
  660 +```dart
  661 +MaterialApp(
  662 + navigatorKey: Get.key,
  663 + navigatorObservers: [GetObserver()],
  664 +);
  665 +```
  666 +
  667 +آپ `گیٹ اوزرور` کے اندر اپنا مڈل ویئر بھی استعمال کرسکیں گے ، اس سے کسی بھی چیز پر اثر نہیں پڑے گا۔
  668 +
  669 +```dart
  670 +MaterialApp(
  671 + navigatorKey: Get.key,
  672 + navigatorObservers: [
  673 + GetObserver(MiddleWare.observer) // Here
  674 + ],
  675 +);
  676 +```
  677 +
  678 +آپ `گیٹ` کیلئے _ عالمی ترتیبات_ تشکیل دے سکتے ہیں۔ کسی بھی راستے کو آگے بڑھانے سے پہلے صرف اپنے کوڈ میں `گیٹ کنفیگ` شامل کریں۔
  679 +یا اسے اپنے `گیٹ میٹیرال ایپ` میں براہ راست کریں
  680 +
  681 +```dart
  682 +GetMaterialApp(
  683 + enableLog: true,
  684 + defaultTransition: Transition.fade,
  685 + opaqueRoute: Get.isOpaqueRouteDefault,
  686 + popGesture: Get.isPopGestureEnable,
  687 + transitionDuration: Get.defaultDurationTransition,
  688 + defaultGlobalState: Get.defaultGlobalState,
  689 +);
  690 +
  691 +Get.config(
  692 + enableLog = true,
  693 + defaultPopGesture = true,
  694 + defaultTransition = Transitions.cupertino
  695 +)
  696 +```
  697 +
  698 +آپ لاگ ان پیغامات کو اختیاری طور پر `گیٹ` سے دوبارہ بھیج سکتے ہیں۔
  699 +اگر آپ خود اپنا ، پسندیدہ لاگنگ پیکیج استعمال کرنا چاہتے ہیں تو ،
  700 +اور وہاں موجود نوشتہ جات پر قبضہ کرنا چاہتے ہیں:
  701 +
  702 +```dart
  703 +GetMaterialApp(
  704 + enableLog: true,
  705 + logWriterCallback: localLogWriter,
  706 +);
  707 +
  708 +void localLogWriter(String text, {bool isError = false}) {
  709 + // pass the message to your favourite logging package here
  710 + // please note that even if enableLog: false log messages will be pushed in this callback
  711 + // you get check the flag if you want through GetConfig.isLogEnable
  712 +}
  713 +
  714 +```
  715 +
  716 +### مقامی اسٹیٹ ویجٹ
  717 +
  718 +یہ وجیٹس آپ کو ایک ہی قیمت کا انتظام کرنے ، اور مقامی طور پر ریاست کو دائمی اور مقامی رکھنے کی اجازت دیتے ہیں۔
  719 +ہمارے پاس ری ایکٹیو اور سادہ ذائقے ہیں۔
  720 +مثال کے طور پر ، آپ ان کو ٹیکسٹ فیلڈ میں چھپے ہوئے متن کو ٹوگل کرنے کے لئے استعمال کرسکتے ہیں ، شاید کوئی رواج بنائیں
  721 +توسیع پذیر پینل ، یا ہوسکتا ہے کہ موجودہ فہرست میں ترمیم کرکے نیچے کی نیویگیشن بار میں مواد کو تبدیل کرتے ہوئے
  722 +`Scaffold` میں جسم کا
  723 +
  724 +#### ویلیو بلڈر
  725 +
  726 +`StatefulWidget` کی ایک سادگی جو` .setState` کال بیک کے ساتھ کام کرتی ہے جو تازہ ترین قیمت لیتی ہے۔
  727 +
  728 +```dart
  729 +ValueBuilder<bool>(
  730 + initialValue: false,
  731 + builder: (value, updateFn) => Switch(
  732 + value: value,
  733 + onChanged: updateFn, // same signature! you could use ( newValue ) => updateFn( newValue )
  734 + ),
  735 + // if you need to call something outside the builder method.
  736 + onUpdate: (value) => print("Value updated: $value"),
  737 + onDispose: () => print("Widget unmounted"),
  738 +),
  739 +```
  740 +
  741 +#### اوبکس ویلیو
  742 +
  743 +اس طرح آپ کو قیمت ملتی ہے
  744 +
  745 +```dart
  746 +ObxValue((data) => Switch(
  747 + value: data.value,
  748 + onChanged: data, // Rx has a _callable_ function! You could use (flag) => data.value = flag,
  749 + ),
  750 + false.obs,
  751 +),
  752 +```
  753 +
  754 +## کارآمد نکات
  755 +
  756 +`.obs`ervables ( _Rx_ Types)
  757 +```dart
  758 +var message = 'Hello world'.obs;
  759 +print( 'Message "$message" has Type ${message.runtimeType}');
  760 +```
  761 +
  762 + `message` --> **RxString**
  763 +
  764 +[x] `message.substring( 0, 4 )`.
  765 +[o] `.value`
  766 +
  767 +```dart
  768 +final name = 'GetX'.obs;
  769 +// only "updates" the stream, if the value is different from the current one.
  770 +name.value = 'Hey';
  771 +
  772 +// All Rx properties are "callable" and returns the new value.
  773 +// but this approach does not accepts `null`, the UI will not rebuild.
  774 +name('Hello');
  775 +
  776 +// is like a getter, prints 'Hello'.
  777 +name() ;
  778 +
  779 +/// numbers:
  780 +
  781 +final count = 0.obs;
  782 +
  783 +// You can use all non mutable operations from num primitives!
  784 +count + 1;
  785 +
  786 +// Watch out! this is only valid if `count` is not final, but var
  787 +count += 1;
  788 +
  789 +// You can also compare against values:
  790 +count > 2;
  791 +
  792 +/// booleans:
  793 +
  794 +final flag = false.obs;
  795 +
  796 +// switches the value between true/false
  797 +flag.toggle();
  798 +
  799 +
  800 +/// all types:
  801 +
  802 +// Sets the `value` to null.
  803 +flag.nil();
  804 +
  805 +// All toString(), toJson() operations are passed down to the `value`
  806 +print( count ); // calls `toString()` inside for RxInt
  807 +
  808 +final abc = [0,1,2].obs;
  809 +// Converts the value to a json Array, prints RxList
  810 +// Json is supported by all Rx types!
  811 +print('json: ${jsonEncode(abc)}, type: ${abc.runtimeType}');
  812 +
  813 +// RxMap, RxList and RxSet are special Rx types, that extends their native types.
  814 +// but you can work with a List as a regular list, although is reactive!
  815 +abc.add(12); // pushes 12 to the list, and UPDATES the stream.
  816 +abc[3]; // like Lists, reads the index 3.
  817 +
  818 +
  819 +// equality works with the Rx and the value, but hashCode is always taken from the value
  820 +final number = 12.obs;
  821 +print( number == 12 ); // prints > true
  822 +
  823 +/// Custom Rx Models:
  824 +
  825 +// toJson(), toString() are deferred to the child, so you can implement override on them, and print() the observable directly.
  826 +
  827 +class User {
  828 + String name, last;
  829 + int age;
  830 + User({this.name, this.last, this.age});
  831 +
  832 + @override
  833 + String toString() => '$name $last, $age years old';
  834 +}
  835 +
  836 +final user = User(name: 'John', last: 'Doe', age: 33).obs;
  837 +
  838 +// `user` is "reactive", but the properties inside ARE NOT!
  839 +// So, if we change some variable inside of it...
  840 +user.value.name = 'Roi';
  841 +// The widget will not rebuild!,
  842 +// `Rx` don't have any clue when you change something inside user.
  843 +// So, for custom classes, we need to manually "notify" the change.
  844 +user.refresh();
  845 +
  846 +// or we can use the `update()` method!
  847 +user.update((value){
  848 + value.name='Roi';
  849 +});
  850 +
  851 +print( user );
  852 +```
  853 +
  854 +#### گیٹ ویو
  855 +
  856 +
  857 +مجھے یہ ویجیٹ پسند ہے ، بہت آسان ، پھر بھی ، اتنا مفید ہے!
  858 +
  859 +ایک کانسٹیٹ اسٹیٹ لیس ویجیٹ ہے جس میں رجسٹرڈ `کنٹرولر` کے لئے حاصل کرنے والا `کنٹرولر` ہے ، بس۔
  860 +
  861 +```dart
  862 + class AwesomeController extends GetxController {
  863 + final String title = 'My Awesome View';
  864 + }
  865 +
  866 + // ALWAYS remember to pass the `Type` you used to register your controller!
  867 + class AwesomeView extends GetView<AwesomeController> {
  868 + @override
  869 + Widget build(BuildContext context) {
  870 + return Container(
  871 + padding: EdgeInsets.all(20),
  872 + child: Text(controller.title), // just call `controller.something`
  873 + );
  874 + }
  875 + }
  876 +```
  877 +
  878 +#### گیٹ ویجٹ
  879 +
  880 +زیادہ تر لوگوں کو اس ویجیٹ کے بارے میں کوئی اندازہ نہیں ہے ، یا اس کے استعمال کو پوری طرح سے الجھن میں ہے
  881 +استعمال کا معاملہ بہت کم ہے ، لیکن بہت ہی خاص ہے: یہ ایک کنٹرولر کی مدد کرتا ہے
  882 +کیچ_کی وجہ سے ، `مجاز اسٹیٹ لیس نہیں ہوسکتا ہے
  883 +
  884 +> تو ، جب آپ کو ایک کنٹرولر "کیش" کرنے کی ضرورت ہے؟
  885 +
  886 +اگر آپ استعمال کرتے ہیں تو ، ** گیٹ ایکس ** کی ایک اور "اتنی عام نہیں" خصوصیت: `گیٹ.کریٹ`۔
  887 +
  888 +`Get.create(()=>Controller())` ایک نیا پیدا کرے گا `Controller` ہر بار جب آپ کال کریں گے
  889 +`Get.find<Controller>()`,
  890 +
  891 +اسی جگہ پر `گیٹ ویجٹ` چمکتا ہے ... جیسے کہ آپ اسے استعمال کرسکتے ہیں ، مثال کے طور پر ،
  892 +ٹوڈو اشیاء کی ایک فہرست رکھنے کے ل. لہذا ، اگر آپکے پاس وجٹس کو "دوبارہ تعمیر" ہو جاتا ہے تو ، یہ وہی کنٹرولر مثال برقرار رکھے گا۔
  893 +
  894 +#### گیٹکس سروس
  895 +
  896 +This class is like a `GetxController`, it shares the same lifecycle ( `onInit()`, `onReady()`, `onClose()`).
  897 +But has no "logic" inside of it. It just notifies **GetX** Dependency Injection system, that this subclass
  898 +**can not** be removed from memory.
  899 +
  900 +So is super useful to keep your "Services" always reachable and active with `Get.find()`. Like:
  901 +`ApiService`, `StorageService`, `CacheService`.
  902 +
  903 +```dart
  904 +Future<void> main() async {
  905 + await initServices(); /// AWAIT SERVICES INITIALIZATION.
  906 + runApp(SomeApp());
  907 +}
  908 +
  909 +/// Is a smart move to make your Services intiialize before you run the Flutter app.
  910 +/// as you can control the execution flow (maybe you need to load some Theme configuration,
  911 +/// apiKey, language defined by the User... so load SettingService before running ApiService.
  912 +/// so GetMaterialApp() doesnt have to rebuild, and takes the values directly.
  913 +void initServices() async {
  914 + print('starting services ...');
  915 + /// Here is where you put get_storage, hive, shared_pref initialization.
  916 + /// or moor connection, or whatever that's async.
  917 + await Get.putAsync(() => DbService().init());
  918 + await Get.putAsync(SettingsService()).init();
  919 + print('All services started...');
  920 +}
  921 +
  922 +class DbService extends GetxService {
  923 + Future<DbService> init() async {
  924 + print('$runtimeType delays 2 sec');
  925 + await 2.delay();
  926 + print('$runtimeType ready!');
  927 + return this;
  928 + }
  929 +}
  930 +
  931 +class SettingsService extends GetxService {
  932 + void init() async {
  933 + print('$runtimeType delays 1 sec');
  934 + await 1.delay();
  935 + print('$runtimeType ready!');
  936 + }
  937 +}
  938 +
  939 +```
  940 +
  941 +`گیٹکسسروس` کو اصل میں حذف کرنے کا واحد راستہ ،`گیٹ.ریسیٹ` ہے جو ایک جیسے ہے
  942 +آپ کی ایپ کا "گرم ریبوٹ"۔ لہذا ، یاد رکھیں ، اگر آپ کو دوران کلاس مثال کے طور پر مطلق استقامت کی ضرورت ہو
  943 +اپنی ایپ کی زندگی بھر ، `گیٹکسسروس` استعمال کریں۔
  944 +
  945 +# پچھلے ورژن سے اہم تبدیلیاں
  946 +
  947 +1. آر ایکس اقسام:
  948 +
  949 +| Before | After |
  950 +| ------- | ---------- |
  951 +| StringX | `RxString` |
  952 +| IntX | `RxInt` |
  953 +| MapX | `RxMap` |
  954 +| ListX | `RxList` |
  955 +| NumX | `RxNum` |
  956 +| DoubleX | `RxDouble` |
  957 +
  958 +آر ایکس کنٹرولر اور گیٹ بلڈر اب آپس میں مل گئے ہیں ، اب آپ کو یہ حفظ کرنے کی ضرورت نہیں ہے کہ آپ کون سے کنٹرولر استعمال کرنا چاہتے ہیں ، صرف گیٹکسکنٹرولر کا استعمال کریں ، یہ سادہ سسٹم مینجمنٹ اور رد عمل کے بھی کام کرے گا۔
  959 +
  960 +2. نامزد روٹس
  961 +پہلے:
  962 +
  963 +```dart
  964 +GetMaterialApp(
  965 + namedRoutes: {
  966 + '/': GetRoute(page: Home()),
  967 + }
  968 +)
  969 +```
  970 +
  971 +اب:
  972 +
  973 +```dart
  974 +GetMaterialApp(
  975 + getPages: [
  976 + GetPage(name: '/', page: () => Home()),
  977 + ]
  978 +)
  979 +```
  980 +
  981 +یہ تبدیلی کیوں؟
  982 +اکثر ، یہ فیصلہ کرنا ضروری ہوسکتا ہے کہ پیرامیٹر ، یا لاگ ان ٹوکن سے کون سا صفحہ ڈسپلے ہوگا ، پچھلا نقطہ نظر پیچیدہ تھا ، کیونکہ اس نے اس کی اجازت نہیں دی۔
  983 +صفحہ کو کسی فنکشن میں داخل کرنے سے رام کی کھپت میں نمایاں کمی واقع ہوئی ہے ، کیونکہ ایپ شروع ہونے کے بعد سے روٹوں کو میموری میں مختص نہیں کیا جائے گا ، اور اس طرح اس طرح کے نقطہ نظر کو کرنے کی بھی اجازت دی گئی ہے۔
  984 +
  985 +```dart
  986 +
  987 +GetStorage box = GetStorage();
  988 +
  989 +GetMaterialApp(
  990 + getPages: [
  991 + GetPage(name: '/', page:(){
  992 + return box.hasData('token') ? Home() : Login();
  993 + })
  994 + ]
  995 +)
  996 +```
  997 +
  998 +# گیٹکس کیوں؟
  999 +
  1000 +1. فلٹر کی تازہ کاری کے بعد ، آپ کے بہت سے پیکیجز ٹوٹ جائیں گے۔ بعض اوقات تالیف کی غلطیاں ہوتی ہیں ، غلطیاں اکثر ظاہر ہوتی ہیں کہ اب بھی اس کے بارے میں کوئی جواب نہیں ملتا ہے ، اور ڈویلپر کو یہ جاننے کی ضرورت ہوتی ہے کہ غلطی کہاں سے ہوئی ہے ، غلطی کو ٹریک کریں ، تب ہی متعلقہ ذخیرہ میں کوئی مسئلہ کھولنے کی کوشش کریں ، اور دیکھیں کہ اس کا مسئلہ حل ہوتا ہے۔ ترقی کے مرکزی وسائل کو مرکز بنائیں (ریاست ، انحصار اور روٹ مینجمنٹ) ، آپ کو اپنے پبسپیک میں ایک پیکیج شامل کرنے اور کام شروع کرنے کی اجازت دے۔ پھڑپھڑانے کی تازہ کاری کے بعد ، آپ کو صرف انحصار کرنے کی ضرورت ہے گیٹ انحصار کو اپ ڈیٹ کریں ، اور کام کریں۔ مطابقت کے مسائل کو بھی حل کریں حاصل کریں۔ ایک پیکج کا ورژن کتنی بار دوسرے کے ورژن کے ساتھ مطابقت نہیں رکھتا ہے ، کیونکہ ایک ورژن میں انحصار استعمال کرتا ہے ، اور دوسرا دوسرے ورژن میں۔ گیٹ کو استعمال کرنے میں بھی یہ کوئی تشویش نہیں ہے ، کیونکہ سب کچھ ایک ہی پیکج میں ہے اور مکمل طور پر ہم آہنگ ہے۔
  1001 +
  1002 +2. فلٹر آسان ہے .فلٹر ناقابل یقین ہے ، لیکن .فلٹر کے پاس اب بھی کچھ بوائلرپلیٹ موجود ہے جو زیادہ تر ڈویلپرز کے لئے ناپسندیدہ ہوسکتا ہے ، جیسے `Navigator.of(context).push (context, builder [...]`. پروگرامنگ کو آسان بنائیں۔ صرف راستے پر کال کرنے کے لئے 8 لائنوں کے کوڈ لکھنے کے بجائے ، آپ صرف یہ کرسکتے ہیں: `Get.to(Home())` اور آپ کر چکے ہیں ، آپ اگلے صفحے پر جائیں گے۔ متحرک ویب یو آر ایل ایک بہت تکلیف دہ چیز ہے جس کے ساتھ کرنا ہے ۔فلٹر فی الحال ، اور یہ کہ گیٹیکس کے ساتھ احمقانہ حد تک آسان ہے۔ .. فلٹر میں ریاستوں کا انتظام کرنا ، اور انحصار کا انتظام کرنا بھی ایک ایسی چیز ہے جو بہت ساری بحثیں پیدا کرتی ہے ، کیوں کہ پب میں سیکڑوں نمونوں کی موجودگی موجود ہے۔ لیکن آپ کے متغیر کے اختتام پر `.obs` شامل کرنے جتنا آسان کوئی چیز نہیں ہے ، اور اپنے ویجیٹ کو کسی اوکس کے اندر رکھ دیں ، اور بات یہ ہے کہ اس متغیر کی تمام تر تازہ کاری خود بخود اسکرین پر اپ ڈیٹ ہوجائے گی۔
  1003 +
  1004 +3. کارکردگی کی فکر کئے بغیر آسانی۔ .فلٹر کی کارکردگی پہلے ہی حیرت انگیز ہے ، لیکن تصور کریں کہ آپ اپنے بلاکس / اسٹورز / کنٹرولرز / وغیرہ کلاسوں کو تقسیم کرنے کے لئے اسٹیٹ مینیجر اور لوکیٹر کا استعمال کرتے ہیں۔ جب آپ کو ضرورت نہ ہو تو آپ کو دستی طور پر اس انحصار کے اخراج کو کال کرنا پڑے گا۔ لیکن کیا آپ نے کبھی اپنے کنٹرولر کو محض استعمال کرنے کے بارے میں سوچا ہے ، اور جب اب یہ کسی کے ذریعہ استعمال نہیں ہو رہا تھا تو ، اسے آسانی سے میموری سے حذف کردیا جائے گا؟ گیٹ ایکس یہی کرتا ہے۔ اسمارٹ مینجمنٹ کے ساتھ ، ہر وہ چیز جو استعمال نہیں ہورہی ہے اسے میموری سے حذف کردیا جاتا ہے ، اور آپ کو پروگرامنگ کے علاوہ کسی بھی چیز کی فکر کرنے کی ضرورت نہیں ہے۔ آپ کو یقین دلایا جائے گا کہ آپ کم از کم ضروری وسائل بروئے کار لا رہے ہیں ، حتی کہ اس کے لئے بھی کوئی منطق پیدا نہیں کیا۔
  1005 +
  1006 +4. اصل ڈیکوپلنگ۔ آپ نے یہ نظریہ "کاروبار کی منطق سے نظریہ کو الگ کریں" سنا ہوگا۔ یہ ریاستی انتظام کے دیگر حلوں کی کوئی خاصیت نہیں ہے اور مارکیٹ میں کسی دوسرے معیار کا یہ تصور ہے۔ تاہم ، سیاق و سباق کے استعمال کی وجہ سے پھڑپھڑ میں اکثر اس تصور کو کم کیا جاسکتا ہے۔
  1007 +اگر آپ کو وراثت والے ویجیٹ کو تلاش کرنے کے لئے سیاق و سباق کی ضرورت ہوتی ہے تو ، آپ کو اس کی نظر میں ضرورت ہوگی ، یا پیرامیٹر کے ذریعہ سیاق و سباق کو منتقل کریں۔ مجھے خاص طور پر یہ حل بہت ہی بدصورت معلوم ہوتا ہے ، اور ٹیموں میں کام کرنے کے لئے ہمیں ہمیشہ ویو کی کاروباری منطق پر انحصار کرنا پڑے گا۔ گیٹکس معیاری نقطہ نظر کے ساتھ غیر روایتی ہے ، اور اگرچہ اس میں اسٹیٹ فل وِیجٹس ، انیسٹیٹ وغیرہ کے استعمال پر مکمل پابندی نہیں ہے تو ، اس کا ہمیشہ ایسا ہی نقطہ نظر ہوتا ہے جو صاف ستھرا ہوسکتا ہے۔ کنٹرولرز کے پاس زندگی کا دور رہتا ہے ، اور جب آپ کو مثال کے طور پر درخواست دینے کی ضرورت ہوتی ہے تو ، آپ کو نظر میں کسی چیز پر انحصار نہیں کرنا ہوتا ہے۔ آپ ایچ ٹی ٹی پی کال شروع کرنے کے لئے اونٹ کا استعمال کرسکتے ہیں ، اور جب ڈیٹا آجائے گا تو متغیرات آباد ہوجائیں گے۔ چونکہ گیٹ ایکس مکمل طور پر رد عمل مند ہے (واقعتا، ، اور نہروں کے تحت کام کرتا ہے) ، ایک بار جب سامان بھر جاتا ہے تو ، اس متغیر کو استعمال کرنے والے تمام ویجٹ خود بخود منظر میں اپ ڈیٹ ہوجائیں گے۔ اس سے UI کی مہارت رکھنے والے افراد کو صرف وگیٹس کے ساتھ کام کرنے کا موقع ملتا ہے ، اور صارف کے واقعات (جیسے بٹن پر کلک کرنے کے علاوہ) کے علاوہ کاروباری منطق پر کچھ بھی نہیں بھیجنا پڑتا ہے ، جبکہ کاروباری منطق کے ساتھ کام کرنے والے افراد الگ الگ کاروبار کی منطق کی تخلیق اور جانچ کر سکتے ہیں۔
  1008 +
  1009 +اس لائبریری کو ہمیشہ اپ ڈیٹ کیا جائے گا اور نئی خصوصیات کو نافذ کیا جائے گا۔ بلا جھجک پی آر پیش کریں اور ان میں اپنا حصہ ڈالیں۔
  1010 +
  1011 +# سماجی خدمات
  1012 +
  1013 +## کمیونٹی چینلز
  1014 +
  1015 +گیٹ ایکس میں انتہائی فعال اور مددگار کمیونٹی ہے۔ اگر آپ کے ذہن میں سوالات ہیں ، یا اس فریم ورک کے استعمال کے سلسلے میں کوئی مدد چاہتے ہیں تو ، براہ کرم ہمارے کمیونٹی چینلز میں شامل ہوں ، آپ کے سوال کا زیادہ جلد جواب دیا جائے گا ، اور یہ سب سے موزوں جگہ ہوگی۔ یہ ذخیر. مسائل کو کھولنے ، اور وسائل کی درخواست کرنے کے لئے خصوصی ہے ، لیکن گیٹ ایکس کمیونٹی کا حصہ بننے میں آزاد محسوس کرتے ہیں۔
  1016 +
  1017 +| **Slack** | **Discord** | **Telegram** |
  1018 +| :-------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------- |
  1019 +| [![Get on Slack](https://img.shields.io/badge/slack-join-orange.svg)](https://communityinviter.com/apps/getxworkspace/getx) | [![Discord Shield](https://img.shields.io/discord/722900883784073290.svg?logo=discord)](https://discord.com/invite/9Hpt99N) | [![Telegram](https://img.shields.io/badge/chat-on%20Telegram-blue.svg)](https://t.me/joinchat/PhdbJRmsZNpAqSLJL6bH7g) |
  1020 +
  1021 +## کس طرح شراکت کریں
  1022 +
  1023 +
  1024 +منصوبے میں شراکت کرنا چاہتے ہیں؟ ہمیں اپنے ایک ساتھی کی حیثیت سے آپ کو اجاگر کرنے پر فخر ہوگا۔ یہاں کچھ نکات ہیں جہاں آپ اپنا حصہ ڈال سکتے ہیں اور گیٹ (اور پھڑپھڑنا) کو اور بہتر بنا سکتے ہیں۔
  1025 +
  1026 +- ریڈمی کو دوسری زبانوں میں ترجمہ کرنے میں مدد کرنا۔
  1027 +- دستاویزات کو ریڈ می میں شامل کرنا (گیٹ کے بہت سارے کام ابھی دستاویزی نہیں ہوئے ہیں)۔
  1028 +- مضامین لکھیں یا ویڈیوز بنائیں جس کی تعلیم دیتے ہیں کہ گیٹ (ان کو ریڈیم میں اور مستقبل میں ہمارے ویکی میں داخل کیا جائے گا) کو کس طرح استعمال کیا جائے۔
  1029 +- کوڈ / ٹیسٹ کے لئے پی آر پیش کرنا۔
  1030 +- نئے افعال سمیت.
  1031 +
  1032 +کسی بھی شراکت کا خیرمقدم ہے!
  1033 +
  1034 +## مضامین اور ویڈیوز
  1035 +
  1036 +- [Dynamic Themes in 3 lines using GetX™](https://medium.com/swlh/flutter-dynamic-themes-in-3-lines-c3b375f292e3) - Tutorial by [Rod Brown](https://github.com/RodBr).
  1037 +- [Complete GetX™ Navigation](https://www.youtube.com/watch?v=RaqPIoJSTtI) - Route management video by Amateur Coder.
  1038 +- [Complete GetX State Management](https://www.youtube.com/watch?v=CNpXbeI_slw) - State management video by Amateur Coder.
  1039 +- [GetX™ Other Features](https://youtu.be/ttQtlX_Q0eU) - Utils, storage, bindings and other features video by Amateur Coder.
  1040 +- [Firestore User with GetX | Todo App](https://www.youtube.com/watch?v=BiV0DcXgk58) - Video by Amateur Coder.
  1041 +- [Firebase Auth with GetX | Todo App](https://www.youtube.com/watch?v=-H-T_BSgfOE) - Video by Amateur Coder.
  1042 +- [The Flutter GetX™ Ecosystem ~ State Management](https://medium.com/flutter-community/the-flutter-getx-ecosystem-state-management-881c7235511d) - State management by [Aachman Garg](https://github.com/imaachman).
  1043 +- [The Flutter GetX™ Ecosystem ~ Dependency Injection](https://medium.com/flutter-community/the-flutter-getx-ecosystem-dependency-injection-8e763d0ec6b9) - Dependency Injection by [Aachman Garg](https://github.com/imaachman).
  1044 +- [GetX, the all-in-one Flutter package](https://www.youtube.com/watch?v=IYQgtu9TM74) - A brief tutorial covering State Management and Navigation by Thad Carnevalli.
  1045 +- [Build a To-do List App from scratch using Flutter and GetX](https://www.youtube.com/watch?v=EcnqFasHf18) - UI + State Management + Storage video by Thad Carnevalli.
  1046 +- [GetX Flutter Firebase Auth Example](https://medium.com/@jeffmcmorris/getx-flutter-firebase-auth-example-b383c1dd1de2) - Article by Jeff McMorris.
  1047 +- [Flutter State Management with GetX – Complete App](https://www.appwithflutter.com/flutter-state-management-with-getx/) - by App With Flutter.
  1048 +- [Flutter Routing with Animation using Get Package](https://www.appwithflutter.com/flutter-routing-using-get-package/) - by App With Flutter.
  1049 +
  1050 +
1 ![](https://raw.githubusercontent.com/jonataslaw/getx-community/master/get.png) 1 ![](https://raw.githubusercontent.com/jonataslaw/getx-community/master/get.png)
2 2
3 -_语言: 中文, [英文](README.md), [巴西葡萄牙语](README.pt-br.md), [俄语](README.ru.md), [西班牙语](README-es.md), [波兰语](README.pl.md), [韩国语](README.ko-kr.md)._ 3 +_语言: 中文, [英文](README.md), [乌尔都语](README.ur-PK.md), [巴西葡萄牙语](README.pt-br.md), [俄语](README.ru.md), [西班牙语](README-es.md), [波兰语](README.pl.md), [韩国语](README.ko-kr.md)._
4 4
5 [![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get) 5 [![pub package](https://img.shields.io/pub/v/get.svg?label=get&color=blue)](https://pub.dev/packages/get)
6 ![building](https://github.com/jonataslaw/get/workflows/build/badge.svg) 6 ![building](https://github.com/jonataslaw/get/workflows/build/badge.svg)