Get.off(()=>const PageOne())
Get.to(() => const PageTow())
Get.back
return GetMaterialApp(
getPages: [
GetPage(name: name, page: page),
GetPage(name: "/pageone", page: () => PageOne()),
],
);
Get.toNamed("/pageone");
Get.offNamed("/pageone");
CounterController _controller = Get.put(CounterController(), permanent: true);
Dependency Injection Controller
هان احنا وفرنا كونترولر بنستخدمه داخل ال onPressed لانه عند الضغط على الزر ما راح يتم اعادة بناء ال Widget
_controller.increment();
_controller.decrement();
GetBuilder<CounterController>(
builder: (controller) => Text("${controller.count}")),
GetX<CounterController>(
builder: (controller) => Text("${controller.count}")),
RxInt count = 0.obs;
RxInt count = 0.obs;
increment() {
count++;
}
decrement() {
count--;
}
Obx(() => Text("${_controller.count}")),
الفكرة من الدرس انه عند استخدام GetBuilder سوف يتم اعادة بناء ال Widget مرة أخرى عملية Rebuild + عند الخروج من الصفحات الموجود فيها بيانات ومستخدم
init: CounterController
اما اذا كان كل GetBuilder متصل ب Controller مختلف فهاي الحالة بحتاج اعمل لكل GetBuilder متغيير init للكنترولر الخاص فيه
في حال كان عندي صفحة فيها 3 GetBuilder مثلا بيعرضوا 3 نصوص على سبيل المثال وكان عندي 3 بوتن لتغيير النص الموجود بالنصوص
لانه راح يتم استدعاء الميثود update الي راح تروح لكل GetBuilder بتستمع لنفس ال Controller وتعمل اله Rebuild
Get.put(CounterController());
CounterController _controller = Get.put(CounterController(), permanent: true);
Get.lazyPut(() => null);
ال lazyPut بتفرق عن ال put انه ما بتم عمل انشاء الها الا وقت الحاجة عكس ال put الي بتم عمل انشاء وتهيئة لها بمجرد فتح الصفحة
Get.find();
في حال عمل انشاء لل lazyPut ومن ثم الخروج وعمل "deleted from memory" والرجوع مرة أخرى سوف يظهر خطأ والسبب ان lazyPut يتم انشاؤها لمرة واحدة
Get.lazyPut(fenix: true);
ال Bindings بتساعدنا على ترتيب الكود وهي عبارة عن مجموعة من ال Classes + لازم نستخدم معها ال (route management) الخاص بال GetX وليس الخاص بفلاتر
getPages: [
GetPage(name: "/pageone", page: () => const PageOne()),
GetPage(name: "/", page: () => Home()),
],
routes: [
"/home":()=> Home(),
],
حتى نفهم موضوع ال Bindings بشكل منيح نتخيل ال Bindings عبارة عن صندوق وداخل هذا الصندوق بحتوى على مجموعة من الانستنس الي بتم عمل حقن الها ولكن هذه الانستنس ### ما راح يتم حقنها الا لما استدعي الصندوق
class HomeBinding implements Bindings {
@override
void dependencies() {
Get.put<Controller1>(Controller1());
Get.put<Controller2>(Controller2());
}
}
getPages: [
GetPage(name: "/", page: () => HomePage(), binding: HomeBinding()), // here!
],
GetMaterialApp(
initialBinding: HomeBinding(), // here!
);
onPressed: () {
Get.to(() => const PageTow(),binding: MyBindings());
},
ShoppingController controller = Get.find(); // injected by Get.create
class CounterController extends GetxController {
@override
void onInit() {
// => initstate
super.onInit();
}
@override
void onReady() {
// run after building Widget
super.onReady();
}
@override
void onClose() {
// When you leave the page
super.onClose();
}
}