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
将是很好的抉择,因为他大大简化了咱们的代码。