当前位置: 首页 > news >正文

浙江二建建设集团有限公司网站长沙求职网招聘网

浙江二建建设集团有限公司网站,长沙求职网招聘网,网站制作 flash 修改,云服务器安装win系统做网站前言 学习教程#xff1a;Getx教程_FlutterGetx系列实战教程 简介 getX是第三方的状态管理插件#xff0c;不仅具有状态管理的功能#xff0c;还具有路由管理、主题管理、国际化多语言管理、网络请求、数据验证等功能。相比其他状态管理组件#xff0c;getX简单、功能强大…前言 学习教程Getx教程_FlutterGetx系列实战教程 简介 getX是第三方的状态管理插件不仅具有状态管理的功能还具有路由管理、主题管理、国际化多语言管理、网络请求、数据验证等功能。相比其他状态管理组件getX简单、功能强大。 官方文档 https://pub-web.flutter-io.cn/packages/get 安装 flutter pub add get将MaterialApp修改为GetMaterialApp GetMaterialApp(title: getx,theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),useMaterial3: true,),home: const MyHomePage(title: getx),);Dialog、snackbar、bottomSheet Dialog ElevatedButton(onPressed: () {Get.defaultDialog(title: 默认弹窗,middleText: 弹出内容你确定要卸载吗,confirm:TextButton(onPressed: () {Get.back();}, child: const Text(确定)),cancel:TextButton(onPressed: () {Get.back();}, child: const Text(取消)));},child: const Text(getx 默认dialog))snackbar ElevatedButton(onPressed: () {Get.snackbar(提示, 删除成功);},child: const Text(snack-bar))bottomSheet ElevatedButton(onPressed: () {Get.bottomSheet(Container(color: Colors.white,height: 130,child: Column(children: [ListTile(leading: const Icon(Icons.wb_sunny_outlined),title: const Text(白天模式),onTap: () {Get.changeTheme(ThemeData.light());Get.back();},),const Divider(),ListTile(leading: const Icon(Icons.wb_sunny),title: const Text(夜间模式),onTap: () {Get.changeTheme(ThemeData.dark());Get.back();},),],),));},child: const Text(snack-bar))路由管理 GetX 为我们封装了Navigation无需context可进行跳转。使用GetX进行路由跳转更加的简单。只需要使用Get.to() 可进行路由跳转GetX对路由跳转简化了跳转动画设置、动画时长定义、动画曲线设置 我们可以通过Get.to()实现普通的路由跳转通过Get.toNamed实现命名路由跳转通过Get.back()实现返回上一级路由通过Get.ofAll()返回跟路由可以通过Get.off()将当前页面从页面栈中移除并将新的页面添加到页面栈中可以通过Get.arguments获取到路由传参 配置路由及路由动画 GetMaterialApp(title: getx,theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),useMaterial3: true,),// home 和 initialRoute同时存在的话initialRoute会优先生效home: const MyHomePage(title: getx), // 主页initialRoute: /, // 默认显示的路由页面defaultTransition: Transition.leftToRight, // 设置所有页面默认的路由跳转动画getPages: [//路由地址GetPage(name: /, page: () const MyHomePage(title: getx)),GetPage(name: /my,page: () const MyInfo(),transition: Transition.leftToRight // 设置路由过度动画)],)Get.toNamed(my, arguments: {message: Hello Flutter});Widget build(BuildContext context) {String mes Get.arguments?[message] ?? 11;return Scaffold(appBar: AppBar(title: const Text(我的),),body: Center(child: Text(个人信息:$mes),),);}路由抽离 import package:test/page/my.dart; import package:get/get.dart;class AppPage {static final ListGetPagedynamic routes [GetPage(name: /my,page: () const MyInfo(),transition: Transition.leftToRight // 设置路由过度动画)]; }GetMaterialApp(title: getx,theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),useMaterial3: true,),// home 和 initialRoute同时存在的话initialRoute会优先生效home: const MyHomePage(title: getx), // 主页// 默认显示的路由页面defaultTransition: Transition.leftToRight, // 设置所有页面默认的路由跳转动画getPages: AppPage.routes,)路由中间件路由守卫 import package:flutter/cupertino.dart; import package:test/page/my.dart; import package:get/get.dart;class AppPage {static final ListGetPagedynamic routes [GetPage(name: /my,page: () const MyInfo(),transition: Transition.leftToRight, // 设置路由过度动画middlewares: [MyMiddleWare()])]; }// 中间件 class MyMiddleWare extends GetMiddleware {// 重写重定向overrideredirect(route) {String power Get.arguments?[power];if (power no) {Get.snackbar(提示, 请先进行登录);return const RouteSettings(name: login);}// 放行跳转到目标路由return null;} }状态管理 主要用与多个页面共享状态使用某一个页面的状态改变其他页面也随着改变。 单页面状态管理 class _MyHomePageState extends StateMyHomePage {// 定义一个响应式的整数RxInt count 0.obs;// 或者RxInt a RxInt(0);overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(backgroundColor: Theme.of(context).colorScheme.inversePrimary,title: Text(widget.title),),// const Color(0x00cab6ec)body: Column(children: [ElevatedButton(onPressed: () {count.value 1;},child: const Text(加1)),// 监听值的变化Obx(() Text(当前值${count.value}))],),);} }如果使用过vue3那么接受起来就非常容易了。 优点如果使用setState 会重新运行build进行更新如果内容过多的话会产生较大的开销。使用Getx只会更新你监听的组件实现一个局部更新。 多页面状态管理 定义一个Controller import package:get/get.dart;class CountController extends GetxController {// 定义响应式变量RxInt count 0.obs; // 增加void add() {count.value;// 调用GetxController内置方法进行更新update();}// 减少void del() {count.value--;// 调用GetxController内置方法进行更新update();} }主页面使用 class _MyHomePageState extends StateMyHomePage {// 创建控制器示例CountController countController Get.put(CountController(), tag: countController);overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(backgroundColor: Theme.of(context).colorScheme.inversePrimary,title: Text(widget.title),),// const Color(0x00cab6ec)body: Column(children: [ElevatedButton(onPressed: () {Get.toNamed(/my);},child: const Text(我的)),ElevatedButton(onPressed: () {// 加1countController.add();},child: const Text(加1)),// 监听值的变化Obx(() Text(当前值${countController.count.value}))],),);} }其他页面使用 class MyInfoState extends StateMyInfo {// 获取示例late final CountController countController;overridevoid initState() {super.initState();countController Get.find(tag: countController);}overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text(我的),),body: Center(child: ElevatedButton(child: const Text(减1),onPressed: () {countController.del();},),),);} }GetX Binding 在我们所有使用Getx状态管理器时都需要手动创建一个示例这样是是否麻烦的。而使用Binding可以在项目初始化时把需要使用的状态管理器统一进行初始化。 创建示例的几个方法 Get.put不使用控制器实例也会被创建Get.lazyPut懒加载方式创建实例只有在使用时才会被创建Get.putAsyncGet.put的异步版本Get.create每次使用都会创建一个新的实例 创建绑定类 import package:get/get.dart;import count_controller.dart;class AllControllerBinding implements Bindings {overridevoid dependencies() {// 初始化Get.lazyPutCountController(() CountController());// 多个则多执行几次Get.lazyPut} }在main.dart中初始化 GetMaterialApp(title: getx,// 初始化绑定状态管理类initialBinding: AllControllerBinding(),theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),useMaterial3: true,),// home 和 initialRoute同时存在的话initialRoute会优先生效home: const MyHomePage(title: getx), // 主页// 默认显示的路由页面defaultTransition: Transition.leftToRight, // 设置所有页面默认的路由跳转动画getPages: AppPage.routes,)使用 初始化完成后就不需要再进行创建。使用时只需要通过Get.find来获取实例即可 CountController countController Get.findCountController();GetView GetView是GetX框架中的一个重要组件它主要用于简化页面组件的创建和管理。通过继承GetView可以方便地创建一个具有状态管理和路由导航功能的页面。 GetView的作用主要有以下几点 简化页面的创建继承GetView后只需重写Widget build(BuildContext context)方法即可创建页面无需再手动创建StatefulWidget或StatelessWidget。 管理页面状态GetView内部封装了GetX框架提供的状态管理功能可以轻松实现状态的监听、更新和销毁避免了手动管理状态的繁琐操作。 路由导航GetView提供了简单的路由导航功能可以通过Get.to()、Get.off()等方法进行页面跳转并且可以携带参数传递。 依赖注入GetView内置了依赖注入功能可以通过Get.put()、Get.lazyPut()等方法来注册和获取全局的依赖对象方便在页面中使用。 总的来说GetView的作用是简化页面组件的创建和管理提供了便捷的状态管理和路由导航功能使得开发者可以更专注于业务逻辑的实现。 实例 // 需要指定要使用的状态管理类 class MyInfoPage extends GetViewCountController {const MyInfoPage({super.key});overrideWidget build(BuildContext context) {// 如果第一次使用还需要put没有结合Binding时Get.put(CountController());return Scaffold(appBar: AppBar(title: const Text(我的),),body: Center(child: ElevatedButton(child: const Text(减1),onPressed: () {// 因为几次了GetView并且指定了泛型因此可以获取到对应controllercontroller.del();},),),);} }几种使用情况 只是单纯展示共享状态或者需要对共享状态操作既有共享状态又有私有状态这是可以结合响应式状态变量来使用。这样就不需要创建StatefulWidget以及其对应的State 多语言配置 略可以自行观看视频。 工具类——GetUtils GetUtils是Getx提供的工具类库包含值是否为空、是否是数字、视频、音频、ppt、邮箱、手机号等。
http://www.w-s-a.com/news/171462/

相关文章:

  • 安徽省建设部网站官网还能用的wap网站
  • 企业网站设计开发网站关键词优化seo
  • 郑州高档网站建设台州网站建设推广
  • 广东省建设信息港网站WordPress手机缩略图设置
  • 优秀网站主题平顶山专业做网站公司
  • wordpress返回顶部插件wordpress站群seo
  • 企业网站建设报价表百度竞价托管哪家好
  • 织梦网站首页打开慢淄博网站推广那家好
  • 苏州高端网站建设kgwl互动网站建设的主页
  • 宿州网站建设哪家公司好个人网站制作方法
  • 网站正能量晚上在线观看视频站长之家关键词挖掘工具
  • 建设网站怎么判断是电脑还是手机仿租号网站源码网站开发
  • seo百度网站排名软件重庆巫山网站设计公司
  • 搭建视频播放网站网站排名诊断
  • 网站域名注册网站centos做网站服务器
  • 网站服务器共享的 vpsh5页面制作软件电脑版
  • 免费手机网站申请上海网站建设设计公司哪家好
  • 站长工具大全企业网上书店网站建设设计
  • 做网站的专业公司公司网站是做的谷歌的
  • 做网站前期工作wordpress图片并排
  • 免费注册网站哪个好wordpress评论修改
  • 合肥模板网站建设软件赤峰公司网站建设
  • 毕业设计都是做网站吗深圳网站制作企业邮箱
  • 网站排名 优帮云小规模公司简介怎么写
  • 那个做头像的网站好选择手机网站建设
  • 设计一个网站花多少时间做视频网站适合用什么服务器
  • asp网站开发环境订单系统单页面网站怎么做
  • 山东网站建设都有那些企业推广策略
  • 网站开发文档是什么概念衣服销售网站建设规划书范文
  • 中国建筑装饰网官网企业网站设计优化公司