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

Flutter 鸿蒙跨端开发实战:集成三方库实现鸿蒙设备 TODO 清单应用

欢迎加入开源鸿蒙跨平台社区 https://openharmonycrossplatform.csdn.net本文专为鸿蒙入门开发者打造以可直接运行的 TODO 清单项目为实战案例手把手教你用 Flutter 跨端框架开发鸿蒙应用全程包含Flutter 核心配置、三方库集成、鸿蒙真机 / 模拟器调试零基础也能跟着实现完整功能。一、项目核心说明技术栈Flutter跨端框架 鸿蒙 OpenHarmony目标平台 实用三方库项目功能待办事项添加、标记完成、删除、本地持久化存储必用三方库shared_preferences本地数据持久化保存 TODO 数据重启不丢失fluttertoast轻量级提示弹窗操作反馈适配目标鸿蒙手机 / 平板 / 模拟器全兼容二、前置环境准备新手必看1. 基础环境安装安装 Flutter SDK≥3.19.0推荐稳定版安装 DevEco Studio鸿蒙官方 IDE用于运行模拟器 / 真机配置 Flutter 鸿蒙编译环境终端执行flutter config --enable-openharmony2. 验证环境终端输入flutter devices若显示鸿蒙设备 / 模拟器说明环境配置成功。三、创建 Flutter 鸿蒙项目步骤 1新建 Flutter 项目终端执行命令创建项目flutter create flutter_harmony_todocdflutter_harmony_todo步骤 2启用鸿蒙平台支持项目根目录执行flutter create--platformsopenharmony.执行后项目会自动生成openharmony适配目录完成鸿蒙基础配置。四、集成三方库核心步骤步骤 1修改pubspec.yaml配置打开项目根目录的pubspec.yaml文件在dependencies节点下添加三方库dependencies:flutter:sdk:flutter# 本地持久化三方库保存TODO数据shared_preferences:^2.5.2# 提示弹窗三方库操作反馈fluttertoast:^8.2.12步骤 2安装三方库终端执行命令拉取依赖flutter pub get等待依赖下载完成无报错即集成成功。五、完整项目代码实现带详细注释替换项目lib/main.dart文件的全部代码以下是可直接运行的完整代码importpackage:flutter/material.dart;// 导入本地持久化三方库importpackage:shared_preferences/shared_preferences.dart;// 导入提示弹窗三方库importpackage:fluttertoast/fluttertoast.dart;voidmain(){runApp(constMyApp());}classMyAppextendsStatelessWidget{constMyApp({super.key});overrideWidgetbuild(BuildContextcontext){returnMaterialApp(title:Flutter鸿蒙TODO清单,// 关闭调试标签debugShowCheckedModeBanner:false,theme:ThemeData(primarySwatch:Colors.blue),home:constTodoPage(),);}}// TODO主页面classTodoPageextendsStatefulWidget{constTodoPage({super.key});overrideStateTodoPagecreateState()_TodoPageState();}class_TodoPageStateextendsStateTodoPage{// 输入框控制器获取输入的待办内容finalTextEditingController_todoControllerTextEditingController();// 待办数据列表存储所有TODO项ListString_todoList[];// 已完成项标记列表记录哪些TODO被勾选Listbool_isCompletedList[];overridevoidinitState(){super.initState();// 页面初始化时加载本地存储的TODO数据_loadTodoData();}// ------------------- 核心方法本地数据操作三方库使用 -------------------// 1. 从本地加载TODO数据shared_preferences三方库Futurevoid_loadTodoData()async{// 获取本地存储实例finalprefsawaitSharedPreferences.getInstance();// 读取本地存储的待办列表无数据则返回空数组setState((){_todoListprefs.getStringList(todoList)??[];_isCompletedListprefs.getStringList(isCompletedList)?.map((e)etrue).toList()??List.generate(_todoList.length,(index)false);});}// 2. 保存TODO数据到本地shared_preferences三方库Futurevoid_saveTodoData()async{finalprefsawaitSharedPreferences.getInstance();// 存储待办内容列表awaitprefs.setStringList(todoList,_todoList);// 存储完成状态列表awaitprefs.setStringList(isCompletedList,_isCompletedList.map((e)e.toString()).toList(),);}// ------------------- 业务功能方法 -------------------// 添加待办事项void_addTodo(){StringtodoContent_todoController.text.trim();// 校验输入内容不能为空if(todoContent.isEmpty){Fluttertoast.showToast(msg:请输入待办内容);return;}setState((){_todoList.add(todoContent);_isCompletedList.add(false);// 清空输入框_todoController.clear();});// 保存到本地_saveTodoData();Fluttertoast.showToast(msg:添加成功);}// 切换待办完成状态void_toggleComplete(int index){setState((){_isCompletedList[index]!_isCompletedList[index];});_saveTodoData();}// 删除待办事项void_deleteTodo(int index){setState((){_todoList.removeAt(index);_isCompletedList.removeAt(index);});_saveTodoData();Fluttertoast.showToast(msg:删除成功);}// ------------------- UI页面布局 -------------------overrideWidgetbuild(BuildContextcontext){returnScaffold(appBar:AppBar(title:constText(Flutter鸿蒙TODO清单),),body:Padding(padding:constEdgeInsets.all(16.0),child:Column(children:[// 输入框 添加按钮Row(children:[Expanded(child:TextField(controller:_todoController,decoration:constInputDecoration(hintText:请输入待办事项,border:OutlineInputBorder(),),),),constSizedBox(width:10),ElevatedButton(onPressed:_addTodo,child:constText(添加),),],),constSizedBox(height:20),// 待办列表展示区域Expanded(child:_todoList.isEmpty?constCenter(child:Text(暂无待办事项快去添加吧~)):ListView.builder(itemCount:_todoList.length,itemBuilder:(context,index){returnCard(margin:constEdgeInsets.only(bottom:8),child:ListTile(// 勾选框标记完成状态leading:Checkbox(value:_isCompletedList[index],onChanged:(value)_toggleComplete(index),),// 待办内容已完成则添加删除线title:Text(_todoList[index],style:TextStyle(decoration:_isCompletedList[index]?TextDecoration.lineThrough:TextDecoration.none,color:_isCompletedList[index]?Colors.grey:Colors.black,),),// 删除按钮trailing:IconButton(icon:constIcon(Icons.delete,color:Colors.red),onPressed:()_deleteTodo(index),),),);},),),],),),);}}六、Flutter 应用运行到鸿蒙设备步骤 1启动鸿蒙模拟器 / 连接真机打开 DevEco Studio → 设备管理器 → 启动鸿蒙手机模拟器或用数据线连接鸿蒙真机开启USB 调试步骤 2运行 Flutter 项目终端执行命令自动编译并安装到鸿蒙设备flutter run-dopenharmony等待编译完成鸿蒙设备上会自动打开 TODO 清单应用。七、功能测试验证效果添加待办输入内容点击添加弹出「添加成功」提示标记完成勾选复选框文字自动添加灰色删除线删除待办点击删除按钮移除对应事项持久化验证关闭应用重新打开数据不会丢失shared_preferences三方库生效鸿蒙适配界面完美适配鸿蒙系统风格无卡顿、无兼容问题八、核心知识点总结Flutter 鸿蒙适配通过flutter create \-\-platformsopenharmony快速启用鸿蒙平台支持三方库集成在pubspec.yaml声明依赖flutter pub get一键安装鸿蒙平台完美兼容核心三方库作用shared_preferences轻量级本地存储无需数据库即可保存数据fluttertoast极简提示弹窗提升用户体验跨端优势一套 Flutter 代码同时运行在 Android、iOS、鸿蒙设备无需重复开发九、常见问题解决三方库安装失败检查网络执行flutter clean后重新flutter pub get无法运行到鸿蒙设备确认开启 USB 调试执行flutter devices查看设备是否识别数据不持久化检查\_saveTodoData方法是否在增删改后调用结语本案例是Flutter 鸿蒙 三方库的入门级实战覆盖了跨端开发、三方库集成、鸿蒙适配三大核心技能。作为鸿蒙开发者掌握 Flutter 跨端技术后可快速实现一套代码多端运行大幅提升开发效率。后续可扩展更多三方库如网络请求、图片加载开发更复杂的鸿蒙跨端应用

相关文章:

Flutter 鸿蒙跨端开发实战:集成三方库实现鸿蒙设备 TODO 清单应用

欢迎加入开源鸿蒙跨平台社区: https://openharmonycrossplatform.csdn.net 本文专为鸿蒙入门开发者打造,以可直接运行的 TODO 清单项目为实战案例,手把手教你用 Flutter 跨端框架开发鸿蒙应用,全程包含Flutter 核心配置、三方库集…...

coze(扣子)5分钟产出爆火短视频操作详解

以前想做个短视频,得先拍摄,然后用PR、喀秋莎等专业软件剪辑,即使用后来面世的会声会影、剪映这类快捷软件,也得操作上一阵子。不过现在各种AI生成视频智能体层出不穷,大大降低了普通人玩短视频的门槛。今天送上一个使…...

47.网络基础

看课件,网络基础网络是操作系统一部分。多个局域网构成广域网。...

Unsloth Sglang Vllm核心区别和使用场景

(一)核心总结 Unsloth:主打「微调/训练加速」,推理只是附带 vLLM:通用推理引擎,主打「高吞吐、高显存利用率」 SGLang:推理引擎,主打「前缀复用、结构化输出、低延迟」 下面从定位、核心技术、性能、适用场景四个维度拆开讲。 一、定位 1. Unsloth 定位:微调优先、推…...

微信AI双开方案:HermesClaw实现iLink协议代理与多AI助手集成

1. 项目概述:一个微信账号,两个AI大脑如果你和我一样,既想体验 Hermes Agent 在代码生成和逻辑推理上的强大能力,又舍不得 OpenClaw 在文件处理和日常对话上的贴心与便捷,那么你肯定也遇到了那个让人头疼的问题&#x…...

AI 编程神器:MonkeyCode 使用心得 —— 重塑开发效率,

我使用 MonkeyCode 的心得分享 大家好!作为一名热爱编程刚入门不久的新手,我想分享一下我最近使用 MonkeyCode 的心得。MonkeyCode 是一款基于人工智能的编程辅助工具,它彻底改变了我的编码体验。从安装到日常使用,整个过程流畅无…...

ImageNet挑战赛:计算机视觉革命的里程碑

1. 计算机视觉领域的"奥林匹克":ImageNet挑战赛全景解读2010年那个闷热的夏天,当李飞飞教授团队首次发布ImageNet大规模视觉识别挑战赛(ILSVRC)时,恐怕没人能预料到这个比赛会成为引爆AI革命的导火索。作为计…...

Transformer跳跃连接:原理、实现与优化实践

1. 跳跃连接的本质与价值 在Transformer架构中,跳跃连接(Skip Connection)早已不是新鲜概念,但它的实际价值常常被低估。我第一次在Vision Transformer项目中系统性地测试不同位置的跳跃连接效果时,意外发现合理配置的…...

Weaviate向量数据库实战:从部署到多模态搜索与生产优化

1. 从零开始:理解Weaviate与向量数据库的核心价值 如果你正在机器学习和AI应用领域摸索,尤其是在处理文本、图像、音频这类非结构化数据时,一定绕不开一个核心问题:如何快速、准确地找到“相似”的内容?传统的基于关键…...

网络初级第五次作业(真机实验配置)

一、实验要求二、实验步骤1. 实验扩扑图2. 配置VLANSW1和SW2:SW3和SW4:3. 配置DHCP服务为PC1和PC2应用DHCP服务并查询IP地址4. 配置OSPF动态路由三、实验结果PC1与PC2通过DHCP动态获取IP地址,三层设备间运行OSPF动态路由协议,PC1可成功ping通PC2&#xf…...

Hugo博客自动化发布:基于OpenClaw的智能工作流实践

1. 项目概述与核心价值作为一名长期维护个人技术博客的开发者,我深知从写作到发布的流程中,那些看似微小却极其消耗心力的“最后一公里”问题。你可能也遇到过:写完一篇精心打磨的 Markdown 文章后,还需要手动编写 Hugo 的 Front …...

深度学习在影评情感分析中的应用与实践

1. 项目概述:基于深度学习的影评情感分析影评情感分析是自然语言处理(NLP)领域的经典任务,也是商业场景中应用最广泛的文本分类技术之一。我在多个电商和社交平台的内容分析系统中都实践过类似方案。这个项目的核心是通过深度学习…...

神经网络基础:从 RNN 的局限到 Transformer 的巅峰

前言 在第一课和第二课中,我们掌握了全连接网络和卷积网络(CNN)。全连接层擅长处理静态特征,卷积层擅长处理空间特征(图像)。 然而,当面对序列数据(如一句话、一段音频&#xff09…...

零基础秒落地!魔珐星云打造专属法务数字人

本次项目聚焦企业内部法务服务场景,依托魔珐星云具身智能数字人开放平台,打造专属企业法务数字人,简化交互形式,仅支持文字输入对话、数字人播报功能,适配企业内部法务咨询、内容传递需求。 项目开发简洁高效&#xf…...

杨校老师课堂之栈结构的专项训练

括号匹配 题目描述 假设表达式中允许包含圆括号和方括号两种括号,其嵌套的顺序随意,如()或[([][])]等为正确的匹配,[(])或(或(()))均为错误的匹配 本题的任务是检验一个给定的表达式中的括号是否匹配正确 输入一个只包含圆括号和方括号的字…...

项目实训——Werewolf-Agent 多智能体狼人杀中DSPy应用优化器优化

一、前言 上周,我在我们的项目中引入了dspy并使用它进行一个简单的测试,在测试过程中,我进行了几局游戏,发现预言家每次的输出结果都相差不大,这让我在玩起来比较无趣,因为在每个阶段,我都可以…...

2.3.2_3浮点数的加减运算(舍入问题)

IEEE754定义的4种舍入模式:舍入模式例子:0舍:1入:100类型:...

PR曲线绘制超简单

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 PR曲线绘制超简单:从入门到自动化实战指南 目录 PR曲线绘制超简单:从入门到自动化实战指南 引言&#xff…...

【无人艇】基于matlab自适应多目标优化的UUV全覆盖路径规划【含Matlab源码 15379期】

💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞&#x1f49…...

Linux USB驱动架构与性能优化实战

1. Linux USB驱动架构深度解析在嵌入式系统开发中,USB驱动作为连接主机与外围设备的关键桥梁,其性能直接影响整个系统的I/O效率。以TI的DaVinci平台为例,其USB驱动实现展现了Linux内核中USB子系统的典型架构与优化技巧。1.1 核心架构分层Linu…...

Python异常检测算法实战:隔离森林与LOF应用解析

1. 异常检测的核心价值与挑战在数据分析的实际场景中,异常点就像沙滩上的珍珠——它们可能代表最有价值的信息,也可能是需要剔除的噪声。我在金融风控领域第一次意识到异常检测的重要性,当时一个看似微小的数据异常背后隐藏着数百万美元的欺诈…...

NitroGen通用游戏AI:从像素到动作的行为克隆模型实战解析

1. 项目概述:从像素到操作,一个通用游戏智能体的诞生 如果你玩过游戏,尤其是那些需要快速反应的动作或射击游戏,你肯定有过这样的体验:看着高手行云流水的操作,心里想着“这操作我上我也行”,结…...

每一次科技的重大变化和政策的重大变化都是一次财富重新分配的机会,有变化就会有需求,你能满足需求就能获得利润

每一次科技的重大变化和政策的重大变化都是一次财富重新分配的机会,有变化就会有需求,你能满足需求就能获得利润 目录 每一次科技的重大变化和政策的重大变化都是一次财富重新分配的机会,有变化就会有需求,你能满足需求就能获得利润 一、第一句解析:稳态市场的利益固化,为…...

信自己,择热爱,事缓则圆

人这一辈子,最靠谱的活法:信自己,择热爱,事缓则圆 你有没有过这样的时刻? 站在人生的岔路口选行业,耳朵里全是外界的声音: “互联网大厂薪资高,挤破头也要进” “体制内才是铁饭碗,别瞎折腾” “这个赛道风口过了,你现在进来就是找死” 你跟着人流往前冲,选了别人…...

OpenClaw System Prompt 构建流程学习笔记

OpenClaw System Prompt 构建流程学习笔记 概述 本笔记详细记录了 OpenClaw 如何将 AGENTS.md 文件内容动态注入到 LLM 的 system 提示词中的完整调用链。该机制是 OpenClaw 工程化设计的核心:用户通过文件系统配置系统行为,而非硬编码。 ✅ 核心结论:AGENTS.md 的内容以原…...

小皮面板完全安装教程:2026年VPS新手从零到上线全攻略

目录 为什么选择小皮面板安装前的准备工作 选择合适的VPS系统要求连接到你的服务器 安装小皮面板 一键安装命令安装过程说明 首次登录与初始配置 访问面板后台修改默认密码开放防火墙端口 部署你的第一个网站 添加站点一键申请SSL证书上传网站文件 数据库管理安全设置建议常见…...

Python实现进化策略算法:原理与优化实践

1. 进化策略算法核心思想解析进化策略(Evolution Strategies, ES)作为一类基于种群的优化算法,其核心思想源于生物进化中的自然选择机制。与传统遗传算法不同,ES更强调参数向量的直接进化而非基因编码的交叉变异。在Python中实现这类算法,我们…...

小红书专业号主体变更流程

小红书专业号主体变更,核心就是把你当前专业号绑定的认证主体、经营主体或者账号归属关系,按照平台规则调整到新主体名下,整个流程资料齐全的话最快2到3个工作日就能完成,不用特意停更或者担心现有粉丝、历史内容受影响。小红书专…...

贝叶斯信念网络:原理、构建与应用实践

1. 贝叶斯信念网络入门指南第一次接触贝叶斯信念网络(Bayesian Belief Networks, BBN)是在研究生时期的一个医疗诊断项目里。当时我们需要建立一个能根据症状推断潜在疾病的概率模型,传统方法在变量间关系处理上捉襟见肘,直到导师推荐了这个"概率图…...

用户上周说有两个孩子,这周说有三个孩子,Agent 如何处理记忆冲突?

首先我们要直到mem0框架,这个框架和RAG类似,RAG存储的数据一般是偏静态偏共享的数据,这类数据一般可以被多人共享,但是mem0的数据一般是用户画像,是偏动态偏隐私的,但是二者的存储策略一般都是使用向量数据库 现在存的数据是用户的相关的数据,所以要使用到mam0框架,mem0的四个…...