본문 바로가기

재개발

GetX 상태관리, 단순형과 반응형

단순형 : GetBuilder를 사용한다. 

반응형 : Obx()를 사용한다. 변수선언은 var 혹은 RxInt로 선언한다.

 

플러터 기본코드를 사용하여 increase가 잘 되는 것을 확인.

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

class Simplecontroller extends GetxController {
  int counter = 0; // 단순형 상태관리
  // var counter = 0.obs; // 반응형 상태관리
  void increase() {
    counter++;
    update();
  }
}

void main() {
  runApp(const GetMaterialApp(home: MyApp()));
}

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

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'GetX Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'GetX Demo Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});
  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    final Simplecontroller sc = Get.put(Simplecontroller());

    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'Simple state managing',
            ),
            GetBuilder<Simplecontroller>(builder: (context) {
              return Text(
                '${sc.counter}',
                style: TextStyle(fontSize: 20),
              );
            }),
            // const Text(
            //   'Complex state managing',
            // ),
            // Obx(
            //   () => Text(
            //     '${sc.counter}',
            //     style: TextStyle(fontSize: 20),
            //   ),
            // ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: sc.increase,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

'재개발' 카테고리의 다른 글

Figma - Bottom Navigation  (1) 2023.01.21
FlutterFlow  (0) 2023.01.09
새로운 상태관리, GetX  (0) 2023.01.09
출시 완료. ㅋ  (0) 2023.01.08
출시 1차시도 실패. ㅋ  (1) 2023.01.07