GetX Code Sample (1)

改写Counter app, 有两个counter,同时有两个页面。一个页面可以修改和查看数据,另一个页面可以查看数据。


import 'package:flutter/material.dart';

import 'package:get/get.dart';

void main(List<String> args) {

  runApp(

    const GetMaterialApp(

      debugShowCheckedModeBanner: false,

      home: MainScreen(),

    ),

  );

}

class IntCounter extends GetxController {

  final counter = 0.obs;

  increase() => counter + 1;

}

class FloatCounter extends GetxController {

  final counter = 0.0.obs;

  increase() => counter + 1.0;

}

class MainScreen extends StatefulWidget {

  const MainScreen({super.key});

  @override

  State<MainScreen> createState() => _MainScreenState();

}

class _MainScreenState extends State<MainScreen> {

  IntCounter ic = Get.put(IntCounter());

  FloatCounter dc = Get.put(FloatCounter());

  @override

  Widget build(BuildContext context) {

    return Scaffold(

      backgroundColor: Colors.blueGrey,

      body: Center(

        child: Column(

          mainAxisAlignment: MainAxisAlignment.center,

          children: [

            Obx(

              () => Text("IntCouter:${ic.counter}"),

            ),

            Obx(

              () => Text("DoubleCount: ${dc.counter}"),

            ),

            TextButton(

                onPressed: () {

                  Get.to(const SecondPage());

                },

                child: const Text("Go"))

          ],

        ),

      ),

      floatingActionButton: FloatingActionButton(

        onPressed: () {

          ic.increase();

          dc.increase();

        },

        child: const Icon(Icons.add),

      ),

    );

  }

}

class SecondPage extends StatefulWidget {

  const SecondPage({super.key});

  @override

  State<SecondPage> createState() => _SecondPageState();

}

class _SecondPageState extends State<SecondPage> {

  IntCounter ic = Get.find();

  FloatCounter dc = Get.find();

  @override

  Widget build(BuildContext context) {

    return Scaffold(

      backgroundColor: Colors.lightGreen,

      body: Center(

        child: Column(

          mainAxisAlignment: MainAxisAlignment.center,

          children: [

            const Text("Second Page: "),

            Obx(

              () => Text("${ic.counter}"),

            ),

            Obx(

              () => Text("${dc.counter}"),

            ),

            TextButton(

                onPressed: () {

                  Get.back();

                },

                child: const Text("Back"))

          ],

        ),

      ),

    );

  }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容