美文网首页flutter
14.6.flutter_GetX

14.6.flutter_GetX

作者: ChaosHeart | 来源:发表于2022-01-28 09:01 被阅读0次

    GetView介绍

    GetView只是对已注册的Controller有一个名为controller的getter的const Stateless的Widget,如果我们只有单个控制器作为依赖项,那我们就可以使用GetView,而不是使用StatelessWidget,并且避免了写Get.Find()

    视频教程地址

    零基础视频教程地址

    GetView如何使用

    GetView的使用方法非常简单,只是要将你的视图层继承自GetView并传入需要注册的控制器并Get.put()即可,我们来看下代码演示:

    第一步:应用程序入口配置

    import 'package:flutter/material.dart';
    import 'package:flutter_getx_example/GetViewAndGetWidgetExample/GetViewAndGetWidgetExample.dart';
    import 'package:get/get.dart';
    
    void main() {
     runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
     @override
     Widget build(BuildContext context) {
       return GetMaterialApp(
         title: "GetX",
         home: GetViewAndGetWidgetExample(),
       );
     }
    }
    

    第二步:继承自GetView并使用状态管理

    import 'package:flutter/material.dart';
    import 'package:flutter_getx_example/GetViewAndGetWidgetExample/GetViewCountController.dart';
    import 'package:get/get.dart';
    
    class GetViewAndGetWidgetExample extends GetView<GetViewCountController> {
    
     @override
     Widget build(BuildContext context) {
    
       Get.put(GetViewCountController());
       // Get.create(() => GetViewCountController());
    
       return Scaffold(
         appBar: AppBar(
           title: Text("GetX GetView"),
         ),
         body: Center(
           child: Column(
             mainAxisAlignment: MainAxisAlignment.center,
             crossAxisAlignment: CrossAxisAlignment.center,
             children: [
               Obx(() => Text(
                 "count的值为: ${controller?.count}",
                 style: TextStyle(
                   color: Colors.red,
                   fontSize: 30
                 ),
               )),
               SizedBox(height: 20,),
               ElevatedButton(
                   onPressed: () {
                     controller.increment();
                   },
                   child: Text("点我加1"))
             ],
           ),
         ),
       );
     }
    }
    

    效果展示

    image

    GetWidget介绍

    它 “缓存 “了一个Controller,由于cache,不能成为一个 “const Stateless”(因为cache,所以不能成为一个const Stateless)。当我们使用Get.create(()=>Controller())会在每次调用时生成一个新的ControllerGet.find<controller style="box-sizing: border-box;">()`</controller>

    GetWidget如何使用

    第一步:应用程序入口设置

    import 'package:flutter/material.dart';
    import 'package:flutter_getx_example/GetViewAndGetWidgetExample/GetViewAndGetWidgetExample.dart';
    import 'package:get/get.dart';
    
    void main() {
     runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
     @override
     Widget build(BuildContext context) {
       return GetMaterialApp(
         title: "GetX",
         home: GetViewAndGetWidgetExample(),
       );
     }
    }
    

    第二步:继承自GetWidget并使用

    import 'package:flutter/material.dart';
    import 'package:flutter_getx_example/GetViewAndGetWidgetExample/GetViewCountController.dart';
    import 'package:get/get.dart';
    
    class GetViewAndGetWidgetExample extends GetWidget<GetViewCountController> {
    
      @override
      Widget build(BuildContext context) {
    
        // Get.put(GetViewCountController());
        Get.create(() => GetViewCountController());
    
        return Scaffold(
          appBar: AppBar(
            title: Text("GetX GetView"),
          ),
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              crossAxisAlignment: CrossAxisAlignment.center,
              children: [
                Obx(() => Text(
                  "count的值为: ${controller?.count}",
                  style: TextStyle(
                    color: Colors.red,
                    fontSize: 30
                  ),
                )),
                SizedBox(height: 20,),
                ElevatedButton(
                  onPressed: () {
                    controller.increment();
                  },
                  child: Text("点我加1"))
              ],
            ),
          ),
        );
      }
    
    }
    

    效果展示

    image

    总结

    在我们平时的开发过程中基本上很少会用到GetWidget,因为我们在大部分情况下都不需要缓存Controller。

    当我们的页面中只依赖了一个控制器的情况话,那么使用GetView将是很好的选择,因为他大大简化了我们的代码。

    参考:

    https://liujunmin.com/flutter/getx/getx_getview_getwidget.html

    相关文章

      网友评论

        本文标题:14.6.flutter_GetX

        本文链接:https://www.haomeiwen.com/subject/vsqahrtx.html