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

【在flutter项目中使用get_cli初始化项目】

1、安装get_cli

安卓和苹果电脑安装时有各自的命令,get_cli安装之前要下载配置flutter、dart的SDK

https://docs.flutter.cn/install/archive

注:flutter3.19.6的版本,对应的dart的版本为3.3.4。

https://dart.dev/get-dart/archive#stable-channel

报错原因:pub.dev访问不了

成功安装

2、初始化项目

用get_cli初始化项目之前在Android Studio中创建好flutter项目

flutter SDK是从官网下载的版本

在项目的终端输入get init,会在lib目录下构建出基本架构

getinit

main.dart

// 导入 Flutter 的 Material Design 组件库import'package:flutter/material.dart';// 导入 GetX 状态管理和路由框架import'package:get/get.dart';// 导入应用的路由配置文件(用 APPRoutes 类管理所有页面路由)import'app/routes/app_pages.dart';// 应用的入口函数,Flutter 启动时会执行这里的 main() 函数voidmain(){// 运行一个 Flutter 应用runApp(// 使用 GetX 框架专用的 GetMaterialApp,它是对原生 MaterialApp 的扩展// 提供了路由管理、依赖注入、国际化等 GetX 功能GetMaterialApp(// 应用标题,在 Android 任务管理器、iOS 应用切换器等处显示title:"Application",// 初始路由:应用启动后第一个显示的页面// 通常定义为 '/'initialRoute:AppPages.INITIAL,// 路由表:定义了路径字符串(如 '/home')与实际页面组件的映射关系// routes 是一个 List<GetPage>,包含了所有页面的配置getPages:AppPages.routes,),);}

app_pages.dart

// 导入 GetX 核心库,提供路由、状态管理等能力import'package:get/get.dart';// 导入 Home 模块的绑定类(用于依赖注入)import'../modules/home/bindings/home_binding.dart';// 导入 Home 模块的视图(UI 页面)import'../modules/home/views/home_view.dart';// 包含路由路径常量的文件(通常是自动生成或手动维护的字符串常量)// 例如:Routes.HOME = '/home', _Paths.HOME = '/home'part'app_routes.dart';// 应用页面路由配置类classAppPages{// 私有构造函数,防止外部实例化该类(仅作为静态工具类使用)AppPages._();// 应用初始路由:启动后第一个显示的页面// Routes.HOME 定义在 app_routes.dart 中,例如值为 '/home'staticconstINITIAL=Routes.HOME;// 路由表(GetPage 列表),定义了路径字符串与实际页面组件的映射关系staticfinalroutes=[GetPage(// 路由名称(路径),在 app_routes.dart 中定义为字符串常量// 例如:const String HOME = '/home';name:_Paths.HOME,// 构建页面组件的函数,使用 const 构造函数可以优化性能page:()=>constHomeView(),// 绑定:负责创建和提供该页面需要的控制器(Controller)// HomeBinding 会在页面打开时懒加载 HomeController,// 并通过 Get.lazyPut() 将其注册到依赖注入系统中,// 这样就可以在 HomeView 中使用 Get.find<HomeController>() 或// 直接在视图里用 controller.属性名 来获取和观察数据变化binding:HomeBinding(),),];}

app_routes.dart

// 声明此文件是 app_pages.dart 文件的一部分(part 机制)// 这意味着此文件不能独立存在,必须与 app_pages.dart 一起编译// 通常用于将一个大文件拆分成多个逻辑片段partof'app_pages.dart';// ============================================// 警告:请勿手动编辑此文件// 此文件由 get_cli 工具通过以下命令自动生成:// get generate pages// 如果手动修改,下次运行生成命令时会被覆盖// ============================================/// 路由名称常量类(对外公开使用)/// 用于在代码中跳转页面时指定路由路径/// 例如:Get.toNamed(Routes.HOME)abstractclassRoutes{// 私有构造函数,防止外部实例化此类// 这个类只作为常量的容器使用Routes._();/// 首页路由常量/// 值为 _Paths.HOME(即 '/home')/// 在 Get.toNamed() 中可直接使用 Routes.HOMEstaticconstHOME=_Paths.HOME;}/// 内部路由路径常量类(模块内部使用)/// 使用下划线开头表示这是私有/内部的,不建议外部直接引用/// 实际存储路由路径的字符串值abstractclass_Paths{// 私有构造函数,防止外部实例化_Paths._();/// 首页路由路径/// 实际值为字符串 '/home'/// 这是路由匹配时实际使用的路径标识staticconstHOME='/home';}

home_binding.dart

// 导入 GetX 核心库,提供依赖注入、状态管理等能力import'package:get/get.dart';// 导入 HomeController 控制器类import'../controllers/home_controller.dart';/// Home 模块的依赖绑定类/// 继承自 Bindings 接口,GetX 会在进入该页面时自动调用 dependencies() 方法/// 作用:将 Controller 注册到 GetX 的依赖注入系统中,实现在页面中自动获取classHomeBindingextendsBindings{/// 重写 Bindings 接口的 dependencies 方法/// 在该方法中声明所有该模块需要使用的依赖(Controller、Service 等)/// 此方法会在页面打开时、GetPage 的 binding 参数被解析时自动执行@overridevoiddependencies(){// 懒加载方式注册 HomeController(最常用的方式)// Get.lazyPut:只有在第一次被 Get.find() 或视图使用 GetBuilder/GetX 时才会创建实例// 优点:节省资源,按需加载,提升应用启动性能Get.lazyPut<HomeController>(()=>HomeController(),);// 其他可选的注册方式(当前代码未使用,仅供参考):// Get.put(HomeController()) // 立即创建,不懒加载// Get.lazyPut(() => HomeController(), fenix: true) // 懒加载,并在销毁后可重新创建// Get.create(() => HomeController()) // 每次调用都创建新实例// Get.putAsync(() async => await HomeController()) // 异步创建}}

home_controller.dart

import'package:get/get.dart';classHomeControllerextendsGetxController{//TODO: Implement HomeControllerfinalcount=20.obs;@overridevoidonInit(){super.onInit();}@overridevoidonReady(){super.onReady();}@overridevoidonClose(){super.onClose();}voidincrement()=>count.value++;}

home_view.dart

import'package:flutter/material.dart';import'package:get/get.dart';import'../controllers/home_controller.dart';classHomeViewextendsGetView<HomeController>{constHomeView({super.key});@overrideWidgetbuild(BuildContextcontext){returnScaffold(appBar:AppBar(title:constText('HomeView'),centerTitle:true,),body:Center(//在回调函数中拿到controller对应的值child:Obx(()=>Text('${controller.count}',style:TextStyle(fontSize:20),)),),);}}
http://www.jsqmd.com/news/810116/

相关文章:

  • 如何快速管理海量图片:ImageSearch本地图片搜索引擎终极指南
  • 如何零安装体验Windows 12:网页版模拟器完整指南
  • 微信视频号直播数据抓取的3大技术突破:开源工具wxlivespy深度解析
  • 如何用开源LIMS系统解决测序实验室的三大管理难题
  • AI应用安全实战:Superagent SDK防护大语言模型运行时风险
  • python开发者一分钟使用taotoken sdk接入多模型服务
  • Linux Shell 和 Shell 脚本详解有哪些核心内容?
  • 微信视频号直播数据抓取终极指南:wxlivespy完整解决方案
  • 告别“健忘”:深度拆解 agentmemory,基于真实基准测试的 AI 编码代理持久化记忆方案
  • Pytorch图像去噪实战(八十):降级策略与熔断保护,保证高峰期服务不被大图请求拖垮
  • 测试服务器
  • XHS-Downloader:小红书无水印下载终极指南 - 免费开源工具详解
  • 2026深圳美本藤校申请中介深度测评:高端定制服务哪家强? - 品牌2026
  • 2026年昆明旧房改造加固一站式解决方案|云南建科官方对接指南 - 企业名录优选推荐
  • 2026年多线路呼叫,综合话务系统适配中小企服务场景 - 品牌2026
  • 从零到一:用Trae IDE高效搭建Java开发环境
  • 终极指南:如何在Windows电脑上直接安装APK文件?APK安装器完全使用教程
  • GoFrame 后台框架的消息队列体系:XYGo Admin 扩展模块如何实现异步任务解耦
  • 每个工具里塞一个小模型,这个思路值得认真对待
  • 游戏PCG实战:超越算法,构建高效可控的生成管线
  • 编码器介绍
  • 突破Cursor Pro限制:开源工具帮你免费解锁AI编程神器完整功能
  • Matlab实战:手把手教你用RLS算法滤除LFM信号中的高斯白噪声(附完整代码)
  • 2026年市面上比较好的甲醛检测公司推荐 - 品牌排行榜
  • 告别无效投放:通信设备企业如何精准选择推广网站与渠道? - 品牌推荐大师
  • 西安透水砖路沿石十大厂家排行榜|2026年本地工程采购必看TOP5 - 深度智识库
  • 深度测评2026广州个体户核定流程精选榜单,革新个体工商户便捷报税新选择
  • 团队成员积极性不高怎么办?常用的激励方法有哪些?
  • 2026年云南房屋加固与昆明旧房改造深度横评:5大品牌选购指南 - 企业名录优选推荐
  • 终极图片去重指南:AntiDupl.NET免费开源工具完全教程