news 2026/5/13 17:23:58

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【在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),)),),);}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/13 17:22:37

基于MCP协议构建智能Discord机器人:架构设计与工程实践

1. 项目概述&#xff1a;当Discord遇上MCP&#xff0c;一个聊天机器人的“大脑”升级如果你在Discord社区里待过&#xff0c;无论是游戏公会、技术社群还是兴趣小组&#xff0c;大概率都见过那些功能各异的机器人。它们能帮你查攻略、放音乐、管理成员&#xff0c;甚至陪你聊天…

作者头像 李华
网站建设 2026/5/13 17:17:41

新手入门零门槛,Captain AI助你7天玩转Ozon

在俄罗斯跨境电商的风口下&#xff0c;Ozon平台吸引了无数新手商家入局。然而&#xff0c;流程繁琐、经验不足、语言不通三大门槛&#xff0c;让超过60%的新手在入驻前3个月就铩羽而归。据行业数据显示&#xff0c;Ozon新手商家的3个月存活率不足40%&#xff0c;其中80%的失败都…

作者头像 李华
网站建设 2026/5/13 17:15:16

开源短剧源码|短剧小程序源码短剧App源码双端适配,即开即用

在当下这个注意力稀缺的时代&#xff0c;短剧以其“爽点密集、节奏明快、情感代入强”的特点&#xff0c;迅速抢占了海量用户的碎片化时间。无论是国内的微信/抖音小程序生态&#xff0c;还是出海的短剧App市场&#xff0c;都呈现出爆发式的增长态势。然而&#xff0c;对于想要…

作者头像 李华
网站建设 2026/5/13 17:11:07

3步解锁百度网盘下载限速:零成本体验高速下载的完整指南

3步解锁百度网盘下载限速&#xff1a;零成本体验高速下载的完整指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘的蜗牛速度而苦恼吗…

作者头像 李华
网站建设 2026/5/13 17:01:29

工程师的幽默感:从技术漫画标题竞赛看社区文化构建

1. 从一则旧闻说起&#xff1a;工程师的幽默感与社区参与 最近在整理一些老资料时&#xff0c;翻到了2010年《EE Times》旗下“EE Life”板块的一则活动公告。内容很简单&#xff0c;就是邀请读者为一幅新漫画配上有趣的标题&#xff0c;获胜者能得到一张签名漫画&#xff0c;以…

作者头像 李华