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
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 |
댓글