본문 바로가기
프로그래밍/Flutter-Dart

[Flutter] get package (1)

by 채연2 2021. 3. 24.

pub.dev에서 어떤 package들을 많이 사용할까 를 찾아보다가 get 이라는 package를 보았다.

 

 

 

pubspec.yaml

dependencies:
  get:

 

 

 

Counter App 만들기

MaterialApp ▶ GetMaterialApp 변경

void main() => runApp(GetMaterialApp(home: Home()));

- GetMaterialApp은 MaterialApp이 자식으로 있는 미리 구성된 위젯이라고 한다.

 

 

Controller class

class Controller extends GetxController {
  RxInt count = 0.obs;

  increment() => count++;
}

- .obs를 사용하여 해당 변수를 관찰 가능한 변수로 만든다. (앞의 값을 초기 값으로 하는 RxInt 반환)

 

 

 

StatefulWidget ▶ StatelessWidget 변경

class Home extends StatelessWidget {
  @override
  Widget build(context) {
    final Controller c = Get.put(Controller());

    return Scaffold(
        appBar: AppBar(
            title: Obx(() => Text("Clicks: ${c.count}"))
        ),
        body: Center(
            child: ElevatedButton(
                child: Text("Go to Other"), 
                onPressed: () => Get.to(Other())
            )
        ),
        floatingActionButton: FloatingActionButton(
            child: Icon(Icons.add), 
            onPressed: c.increment)
    );
  }
}

class Other extends StatelessWidget {
  final Controller c = Get.find();

  @override
  Widget build(context) {
    return Scaffold(
        body: Center(
            child: Text("${c.count}")
        )
    );
  }
}

- Get.put()을 사용하여 Controller 클래스를 인스턴스화 함. → 자식 위젯들이 사용 가능하게 함

- Obx()를 사용하여 count가 변경될 때마다 Text()를 업데이트 함.

- 화면 이동 시, Navigator.push() 대신 Get.to()로 변경하여 context 필요하지 않음

- Get.find()를 사용하여 다른 페이지에서 사용중인 Controller를 찾아 redirec하도록 요청

 

 

 

결과

 

 

 

 

참고 : pub.dev/packages/get#about-get

 

get | Flutter Package

Open screens/snackbars/dialogs without context, manage states and inject dependencies easily with GetX.

pub.dev

 

320x100

'프로그래밍 > Flutter-Dart' 카테고리의 다른 글

[Flutter] cached_network_image  (0) 2021.03.25
[Flutter] get package (2)  (0) 2021.03.25
[Flutter] GestureDetector  (0) 2021.03.24
[Flutter] Bluetooth  (0) 2021.03.24
[Flutter] Provider (2)  (0) 2021.03.24

댓글