Open name27 opened 1 year ago
import 'package:get/get.dart'; class CoinController extends GetxController { RxInt coin = 0.obs; @override void onInit() { // TODO: implement onInit super.onInit(); ever(coin, (value) { if (value % 10 == 0 && value > 0) { Get.snackbar('코인 $value개 돌파', '축하합니다'); } return; }); } }
import 'dart:async'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:getx_rx_obx_app/model/coin_controller.dart'; import 'page/main_page.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { var coinController = Get.put(CoinController()); Timer _timer; _timer = Timer.periodic(Duration(seconds: 1), (timer) { coinController.coin.value++; }); return GetMaterialApp( home: MainPage(), ); } }
import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:get/get.dart'; import 'package:getx_rx_obx_app/model/coin_controller.dart'; import 'package:getx_rx_obx_app/page/shop_page.dart'; class MainPage extends StatelessWidget { const MainPage({super.key}); @override Widget build(BuildContext context) { var coinController = Get.find<CoinController>(); return Scaffold( body: Center( child: Column( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ Obx(() => Padding( padding: const EdgeInsets.symmetric(vertical: 8.0), child: Text( 'Cuttent Coin : ${coinController.coin.value}', style: TextStyle( fontWeight: FontWeight.w500, fontSize: 20, wordSpacing: 1.2, letterSpacing: 0.8), ), )), Icon( FontAwesomeIcons.bitcoin, size: 96.0, color: Colors.yellow.shade700, ), TextButton( onPressed: () { Get.to(ShopPage()); }, child: Text('상점으로 이동하기')) ], ), ), ); } }
import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:getx_rx_obx_app/model/coin_controller.dart'; class ShopPage extends StatelessWidget { const ShopPage({super.key}); @override Widget build(BuildContext context) { var coinController = Get.find<CoinController>(); return Scaffold( body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ Text('상점', style: TextStyle(fontWeight: FontWeight.w500, fontSize: 18)), SizedBox( height: 8, ), Obx(() => Text('현재 보유한 코인 : ${coinController.coin.value.toString()}')), TextButton( onPressed: () { coinController.coin(0); }, child: Text('코인리셋')) ], ), ), ); } }
coin_controller.dart
main.dart
main_page.dart
shop_page.dart