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"))          ],        ),      ),    );  }}

成果展现

GetWidget介绍

它 "缓存 "了一个Controller,因为_cache_,不能成为一个 "const Stateless"(因为_cache_,所以不能成为一个const Stateless)。当咱们应用Get.create(()=>Controller()) 会在每次调用时生成一个新的Controller Get.find<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"))          ],        ),      ),    );  }}

成果展现

总结

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

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