GetX یک بسته قدرتمند و سبک برای Flutter است که مدیریت حالت، مدیریت مسیر و تزریق وابستگی را ساده می کند. این طراحی شده است تا توسعه برنامه را با کاهش کد دیگ بخار و مرتب نگه داشتن موارد کارآمدتر کند.

چه زمانی از GetX استفاده کنیم:
1. مدیریت وضعیت: زمانی که نیاز دارید وضعیت برنامه خود را به طور موثر و بدون نوشتن کدهای دیگ بخار زیاد مدیریت کنید.
2. مدیریت مسیر: اگر نیاز به پیمایش بین صفحات مختلف در برنامه خود دارید.
3. Dependency Injection: زمانی که می خواهید وابستگی ها را به راحتی و بدون ایجاد مجدد نمونه ها تزریق کنید.
4. عملکرد: اگر به دنبال راه حلی سبک وزن هستید که بر عملکرد برنامه شما تأثیری نداشته باشد.
5. بهره وری: زمانی که می خواهید با یک نحو بصری و ساده در زمان توسعه صرفه جویی کنید.
GetX به ویژه برای توسعه دهندگانی که می خواهند رابط های کاربری واکنشی و پاسخگو با حداقل کد بسازند مفید است. این یک انتخاب عالی هم برای مبتدیان و هم برای توسعه دهندگان با تجربه است که به دنبال ساده سازی پروژه های Flutter خود هستند.
بیایید به مثالی بپردازیم تا نشان دهیم چگونه می توان از GetX برای مدیریت حالت، مدیریت مسیر و تزریق وابستگی در یک برنامه Flutter استفاده کرد.
مثال مدیریت حالت:
فرض کنید یک برنامه پیشخوان دارید که در آن می خواهید وضعیت یک شمارنده را مدیریت کنید.
1. افزودن وابستگی GetX: خط زیر را به فایل pubspec.yaml خود اضافه کنید:
dependencies: get: ^4.6.1
2. ایجاد یک کنترلر: یک کنترلر برای مدیریت وضعیت شمارنده ایجاد کنید.
import 'package:get/get.dart'; class CounterController extends GetxController { var count = 0.obs; void increment() { count++; } }
3. ایجاد رابط کاربری: از GetX برای اتصال کنترلر به رابط کاربری استفاده کنید.
import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'counter_controller.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return GetMaterialApp( home: CounterPage(), ); } } class CounterPage extends StatelessWidget { final CounterController counterController = Get.put(CounterController()); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('GetX Counter')), body: Center( child: Obx(() => Text('Count: ${counterController.count}')), ), floatingActionButton: FloatingActionButton( onPressed: counterController.increment, child: Icon(Icons.add), ), ); } }
مثال مدیریت مسیر:
در اینجا نحوه مدیریت ناوبری با استفاده از GetX آورده شده است.
1. تعریف مسیرها:
import 'package:flutter/material.dart'; import 'package:get/get.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return GetMaterialApp( initialRoute: '/', getPages: [ GetPage(name: '/', page: () => HomePage()), GetPage(name: '/second', page: () => SecondPage()), ], ); } } class HomePage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('Home Page')), body: Center( child: ElevatedButton( onPressed: () { Get.toNamed('/second'); }, child: Text('Go to Second Page'), ), ), ); } } class SecondPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('Second Page')), body: Center( child: ElevatedButton( onPressed: () { Get.back(); }, child: Text('Go Back'), ), ), ); } }
مثال تزریق وابستگی:
استفاده از تزریق وابستگی برای مدیریت یک سرویس ساده.
1. ایجاد یک سرویس:
class MyService extends GetxService { Future<MyService> init() async { // Initialization code return this; } String fetchData() { return "Data from MyService"; } }
2. تزریق و استفاده از خدمات:
import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'my_service.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return GetMaterialApp( home: HomePage(), ); } } class HomePage extends StatelessWidget { final MyService myService = Get.put(MyService()); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('Dependency Injection')), body: Center( child: Text('Service Data: ${myService.fetchData()}'), ), ); } }
این مثالها باید نقطه شروع خوبی به شما بدهد تا بفهمید چگونه میتوان از GetX برای سادهسازی توسعه اپلیکیشن Flutter استفاده کرد.