Flutter鸿蒙版本灵活使用方法间的回调处理复杂化的逻辑
目录
写在前面
示例代码
main.dart:
one.dart:
代码解析
1. 主入口 main 函数
2. MyApp 类
3. CallbackExample 类
4. onok 函数
5. one 函数
写在后面
写在前面
在 Flutter 开发中,灵活使用函数之间的回调带来了多种好处,包括提高可重用性、简化异步编程、增强解耦设计以及提升用户体验。回调不仅使代码更易于理解和维护,还使得处理复杂逻辑变得简单且高效。因此,掌握回调函数的使用是 Flutter 开发者的重要技能。
示例代码
以下是我们将要讨论的完整代码:
main.dart:
import 'package:flutter/material.dart';import 'one.dart';void main() {runApp(MyApp());
}class MyApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(title: 'Custom Callback Example',home: CallbackExample(),);}
}var age = "18";class CallbackExample extends StatelessWidget {@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('Custom Callback Example'),),body: Center(child: ElevatedButton(onPressed: () {onok();},child: Text('开始任务'),),),);}
}onok() {one(123456789, "XIAOLI", (success) {if(success == true){print("age=$age");}else if(success == false){print("one函数回调false的逻辑");}});
}
one.dart:
Future<void> one(int? ID, String? name,Function(bool) callback) async {Map<String,dynamic>List = {'ID':ID,'name':name};var num = List.length;if(num!=0){callback(true);}
}
代码解析
1. 主入口 main 函数
void main() {runApp(MyApp());
}
main 函数是 Flutter 应用的入口点,它调用 runApp 函数来启动应用。这里我们传入一个 MyApp 实例。
2. MyApp 类
class MyApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(title: 'Custom Callback Example',home: CallbackExample(),);}
}
MyApp 是应用的根组件,返回一个 MaterialApp,它设置了应用的标题和主页。在这个例子中,主页是 CallbackExample。
3. CallbackExample 类
class CallbackExample extends StatelessWidget {@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('Custom Callback Example'),),body: Center(child: ElevatedButton(onPressed: () {onok();},child: Text('开始任务'),),),);}
}
CallbackExample 是一个无状态组件,其中包含一个 ElevatedButton 按钮。当用户点击按钮时,将调用 onok 函数。
4. onok 函数
void onok() {one(123456789, "XIAOLI", (success) {if (success == true) {print("age=$age");} else if (success == false) {print("one函数回调false的逻辑");}});
}
onok 函数调用 one 函数,传入三个参数:一个 ID(123456789)、一个 name("XIAOLI")以及一个回调函数。回调函数接受一个布尔值 success,用于判断操作是否成功。
- 如果
success为true,打印age的值。 - 如果
success为false,打印一条失败的逻辑。
5. one 函数
Future<void> one(int? ID, String? name, Function(bool) callback) async {Map<String, dynamic> list = {'ID': ID,'name': name};var num = list.length;// 如果数据不为空,则调用回调函数并返回成功状态if (num != 0) {callback(true);} else {callback(false);}
}
one 函数模拟了一个异步操作,它接受三个参数:ID、name 和一个回调函数 callback。
- 使用
Map将ID和name存储为键值对。 - 计算
list的长度,如果不为0,调用回调函数并传入true;否则传入false。
写在后面
通过这个简单的示例,我们展示了如何在 Flutter 中实现函数调用和回调的基本使用。回调函数是处理异步操作的有效方式,它允许我们在操作完成后执行特定的逻辑。
这种模式非常适合在网络请求、文件处理或其他需要异步操作的场景中使用。通过使用回调,我们能够在操作完成后获取结果,并根据结果做出相应的处理。这种灵活性使得代码更具可读性和可维护性。
在实际应用中,你可以根据需要修改回调函数,以实现更复杂的逻辑。这种方式可以大大增强你的 Flutter 应用的响应能力和用户体验。
相关文章:
Flutter鸿蒙版本灵活使用方法间的回调处理复杂化的逻辑
目录 写在前面 示例代码 main.dart: one.dart: 代码解析 1. 主入口 main 函数 2. MyApp 类 3. CallbackExample 类 4. onok 函数 5. one 函数 写在后面 写在前面 在 Flutter 开发中,灵活使用函数之间的回调带来了多种好处,包括提高可重用性、…...
视频号直播自动回复与循环发送话术-自动化插件
我们在做视频号直播的时候,会有这种自动回复咨询问题的功能 唯一客服浏览器插件现在就支持,在视频号直播后台,自动化回复用户问题,以及循环发送我们的介绍话术...
springcloud之服务集群注册与发现 Eureka
前言 1:对于能提供完整领域服务接口功能的RPC而言,例如;gRPC、Thrift、Dubbo等,服务的注册与发现都是核心功能中非常重要的一环,使得微服务得到统一管理。 2:在分布式领域中有个著名的CAP理论;…...
C++:模拟实现list
目录 节点 迭代器 整体框架 构造函数 empty_init 拷贝构造 赋值重载 析构函数 clear insert erase push_back和push_front pop_back和push_front size empty Print_Container 节点 对于链表节点,我们需要一个数据、一个前驱指针、一个后继指针来维护…...
解锁5 大无水印热门短视频素材库
想让你的抖音视频更出彩吗?想知道那些爆款视频的素材源头吗?快来了解以下 5 个超棒的视频素材下载平台。 蛙学网 国内的视频素材佼佼者,有大量 4K 高清且无水印的素材,自然风光、情感生活等类别任你选,不少还免费&…...
【电商购物管理系统】Python+Django网页界面平台+商品管理+数据库
一、介绍 电商购物管理系统,本系统前端使用HTML、CSS、BootStrap等技术搭建前端界面,后端使用Django框架处理用户的逻辑请求。主要功能有: 管理员登录与管理:管理员可以登录后台,对用户和商品进行增删改查的操作。用…...
AD9248驱动的简易示波器设计——FPGA学习笔记21
一、原理 我们这里设计的是显示 1024 个波形数据点, 在绘制每一行的图像的时候, 比对每一个数据和 VS 的 Y 坐标是否相等, 如果相等就绘制这个波形点。 这样我们就能完成 1024 个波形点在整个屏幕的显示。 二、乒乓操作 可见FPGA实现双口RAM…...
微软十月补丁星期二发现了 118 个漏洞
微软将在2024 年 10 月补丁星期二解决 118 个漏洞,并且有证据表明发布的 5 个漏洞被野蛮利用和/或公开披露,尽管微软尚未将其中任何一个漏洞评定为严重漏洞。 在这五个漏洞中,微软列出了两个已被利用的漏洞,这两个漏洞现在都已列…...
到底是微服务,还是SOA?
引言:大概正式工作有5年了,换了三个大厂【也是真特么世道艰难,中国互联网人才饱和了】。基本上每个公司有的架构都不太相同,干过TOC和TOB的业务,但是大家用的架构都不太相同。有坚持ALL in one的SB,最后服务…...
JDK17常用新特性
目前国内大部分开发人员都是在使用jdk8,甚至是jdk6,但是随着jdk的更新迭代,jdk8我觉得可能就会慢慢的淡出舞台,随着目前主流框架最新版推出明确说明了不再支持jdk8,也促使我不得不抓紧学习了解一波jdk17的新特性&#…...
【分布式微服务云原生】探索负载均衡的艺术:深入理解与实践指南
探索负载均衡的艺术:深入理解与实践指南 摘要: 在本文中,我们将深入探讨负载均衡的概念、重要性以及实现负载均衡的多种算法。通过详细的技术解析、Java代码示例、流程图和对比表格,您将了解如何选择合适的负载均衡策略来优化资源…...
拥抱云原生
专题七:云原生实战72课时 专题简介: 云原生正在改变世界,新一代架构思想ServiceMesh、Serverless改变传统软件架构模式,本专题基于完全云上架构实战,结合微服务架构和云计算平台两者的优势,属于架构师必备…...
关于使用若依并快速构建系统的操作指南
准备阶段--下载源码(脚手架) 1.1 若依官网地址:https://www.ruoyi.vip/ 1.2 选择“前后端分离版本进行下载”,如下图所示 1.3 跳转gitee后,直接按如下步骤进行下载。 前后端模块分离 解压,并打开到项目…...
【分布式微服务云原生】 选择SOAP还是RESTful API?深入探讨与实践指南
🌐 选择SOAP还是RESTful API?深入探讨与实践指南 摘要: 在构建现代Web服务时,开发者常常面临一个关键决策:是选择SOAP还是RESTful API?本文将为您提供一个全面的比较,包括两者的适用场景、安全…...
HarmonyOS NEXT 应用开发实战(五、页面的生命周期及使用介绍)
HarmonyOS NEXT是华为推出的最新操作系统,arkUI是其提供的用户界面框架。arkUI的页面生命周期管理对于开发者来说非常重要,因为它涉及到页面的创建、显示、隐藏、销毁等各个阶段。以下是arkUI页面生命周期的介绍及使用举例。 页面的生命周期的作用 页面…...
C# 比较两个集合和比较对象
1、比较集合 /// <summary> /// 比较两个集合 /// </summary> /// <typeparam name"T"></typeparam> /// <param name"list1"></param> /// <param name"list2"></param> /// <returns>&…...
Spark高级用法-自定义函数
用户可以根据需求自己封装计算的逻辑,对字段数据进行计算 内置函数,是spark提供的对字段操作的方法 ,split(字段) 对字段中的数进行切割,F.sum(字段) 会将该字段下的数据进行求和 实际业务中又能内置函数不满足计算需求࿰…...
『Mysql进阶』Mysql explain详解(五)
目录 Explain 介绍 Explain分析示例 explain中的列 1. id 列 2. select_type 列 3. table 列 4. partitions 列 5. type 列 6. possible_keys 列 7. key 列 8. key_len 列 9. ref 列 10. rows 列 11. filtered 列 12. Extra 列 Explain 介绍 EXPLAIN 语句提供有…...
【工具】音视频翻译工具基于Whisper+ChatGPT
OpenAI推出的开源语音识别工具Whisper,以其卓越的语音识别能力,在音频和视频文件处理领域大放异彩。与此同时,ChatGPT也在翻译领域崭露头角,其强大的翻译能力备受赞誉。因此,一些字幕制作团队敏锐地捕捉到了这两者的结…...
学成在线——关于nacos配置优先级的坑
出错: 本地要起两个微服务,一个是content-api,另一个是gateway网关服务。 发现通过网关服务请求content微服务时,怎么请求都请求不到。 配置如下: content-api-dev.yaml的配置: server:servlet:context-p…...
Kubernetes 集群管理新选择:Kuboard 图形化界面实战解析
1. 为什么你需要Kuboard这样的Kubernetes图形化管理工具 如果你刚开始接触Kubernetes,可能会被它复杂的命令行操作吓到。记得我第一次使用kubectl时,光是记住各种命令参数就花了两周时间。后来团队规模扩大,管理多个集群时,命令行…...
Meixiong Niannian与SpringBoot微服务架构
Meixiong Niannian与SpringBoot微服务架构 1. 引言 在当今快速发展的AI应用领域,如何将强大的画图引擎无缝集成到企业级系统中是一个关键挑战。Meixiong Niannian作为一款高性能的AI画图引擎,能够生成高质量的图像内容,而SpringBoot微服务架…...
从音频生成到DNA分析:手把手带你用S4和Hyena搞定Transformer不擅长的那些长序列任务
从音频生成到DNA分析:手把手带你用S4和Hyena搞定Transformer不擅长的那些长序列任务 当我们需要处理长达数小时的音频波形、百万碱基对的DNA序列或整本小说级别的文本时,传统Transformer架构很快就会遇到计算瓶颈。本文将带您探索两种突破性的序列建模方…...
cutlass代码架构分析
CUTLASS 代码架构分析 本文档基于 cutlass代码进行梳理,快速理解 CUTLASS 4.x 的模块边界与调用链路。 1. 总体架构 CUTLASS 本质上是一个 header-only 的 CUDA C++ 模板库,外围配套了可选构建目标: include/:核心库(cutlass + cute) tools/:库实例化、性能测试与通用…...
Ubuntu 20.04 LTS下FinalShell安装全攻略(附一键脚本及常见问题解决)
Ubuntu 20.04 LTS下FinalShell终极配置指南:从安装到高阶应用 为什么开发者需要FinalShell? 作为一名长期使用Ubuntu进行远程服务器管理的开发者,我深知一款优秀的SSH工具对工作效率的影响。FinalShell作为跨平台的国产SSH工具,…...
UEFI安全启动恢复流程文档:详细操作指南与故障排除
UEFI安全启动恢复流程文档:详细操作指南与故障排除 【免费下载链接】edk2 EDK II 项目地址: https://gitcode.com/gh_mirrors/ed/edk2 UEFI安全启动是现代计算机系统的重要安全功能,它通过数字签名验证确保只有受信任的操作系统和引导加载程序能够…...
all-MiniLM-L6-v2开发者案例:集成至LangChain实现动态RAG检索链路
all-MiniLM-L6-v2开发者案例:集成至LangChain实现动态RAG检索链路 在构建智能问答或文档分析系统时,一个核心挑战是如何从海量文本中快速、准确地找到最相关的信息。传统的基于关键词的搜索,往往因为无法理解语义而“答非所问”。今天&#…...
FTDI FT2232H USB转JTAG实战指南:MPSSE配置与多设备调试
1. FT2232H与JTAG基础入门 第一次接触FT2232H这块芯片时,我完全被它的多功能性震惊了。这块小小的USB转接芯片不仅能处理UART通信,还能通过MPSSE引擎模拟JTAG、SPI、I2C等多种协议。对于嵌入式开发者来说,这简直就是调试神器。 FT2232H最吸引…...
Qwen3-ASR-0.6B惊艳效果:藏语、维吾尔语等少数民族语言识别案例
Qwen3-ASR-0.6B惊艳效果:藏语、维吾尔语等少数民族语言识别案例 1. 引言:多语言语音识别的突破 语音识别技术正在改变我们与设备交互的方式,但有一个领域一直存在巨大挑战——少数民族语言的识别。传统的语音识别模型往往只支持主流语言&am…...
深入解析PLL锁相环在FPGA时钟管理中的核心应用
1. 从闹钟到芯片:PLL如何成为FPGA的"时间管家" 想象一下你早上起床的场景:手机闹钟准时响起,咖啡机开始自动煮咖啡,窗帘缓缓拉开让阳光照进来。这些设备之所以能完美同步,全靠它们内部精确的时钟信号。而在…...
