Using GetX for State Management

Michael PiperMichael Piper
2 min read

GetX is a powerful and lightweight state management solution for Flutter that offers reactive state management, dependency injection, and route management. It simplifies state management and makes it easier to handle complex scenarios.

Here’s a step-by-step example of using GetX for state management:

  1. Add Dependencies

Add the get package to your pubspec.yaml file:

dependencies:
  flutter:
    sdk: flutter
  get: ^4.6.5
  1. Create a Controller

Define a GetX controller to manage your state.

counter_controller.dart:

import 'package:get/get.dart';

class CounterController extends GetxController {
  // Observable state
  var count = 0.obs;

  // Method to update the state
  void increment() {
    count++;
  }
}
  1. Set Up GetX in main.dart

Use GetMaterialApp instead of MaterialApp to set up routing and state management with 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: CounterScreen(),
    );
  }
}
  1. Create the Counter Screen

Use Obx to make the UI reactive to changes in the GetX controller.

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'counter_controller.dart';

class CounterScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // Instantiate the controller
    final CounterController controller = Get.put(CounterController());

    return Scaffold(
      appBar: AppBar(title: Text('GetX Example')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('You have pushed the button this many times:'),
            Obx(() {
              return Text(
                '${controller.count}',
                style: Theme.of(context).textTheme.headline4,
              );
            }),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () => controller.increment(),
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}

Summary

GetX simplifies state management in Flutter with its reactive approach, making it easy to handle state updates and dependencies. In this example, we demonstrated how to use GetX to manage a counter's state by creating a controller, updating the state, and reflecting those changes in the UI. GetX’s Obx widget makes it easy to update the UI reactively whenever the state changes, providing a seamless and efficient way to manage state in your Flutter applications.

0
Subscribe to my newsletter

Read articles from Michael Piper directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Michael Piper
Michael Piper

Experienced Software Engineer skilled in creating mobile apps and web solutions. Expertise in iOS/Android app development, JavaScript frameworks, Python, and research methodologies. Detail-oriented problem solver with 10+ years of experience delivering top-notch solutions.