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…...
SAP屏幕导航:从SET到LEAVE,实战解析六大跳转策略
1. SAP屏幕导航的核心逻辑 在SAP ABAP开发中,屏幕导航就像是在迷宫中寻找出口。想象你手里有六把不同的钥匙(六种跳转策略),每把钥匙对应不同的门锁(业务场景)。选错钥匙要么打不开门,要么可能把…...
Cursor Pro破解完整指南:3种方法实现AI编程助手永久免费使用
Cursor Pro破解完整指南:3种方法实现AI编程助手永久免费使用 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached yo…...
【小白也能懂得操作】解决 OpenClaw 操作电脑受限问题详细指南(含安装包)
OpenClaw 没有电脑操作权限怎么办?完整解决方法 【新人点击链接直接下载openclaw安装包】 OpenClaw 在运行时需要对系统进行文件读写、键鼠模拟、窗口控制等操作,如果出现无法操作电脑、提示没有权限的问题,会直接影响自动化功能使用。本文…...
Windows 10系统优化深度指南:使用Win10BloatRemover打造高效工作环境
Windows 10系统优化深度指南:使用Win10BloatRemover打造高效工作环境 【免费下载链接】Win10BloatRemover Configurable CLI tool to easily and aggressively debloat and tweak Windows 10 by removing preinstalled UWP apps, services and more. Originally bas…...
用PyQt5给树莓派人脸门禁做个图形界面:从Qt Designer设计到移植上板的完整流程
树莓派人脸门禁系统GUI开发实战:从Qt设计到嵌入式部署的全链路解析 当硬件项目需要与用户交互时,一个直观的图形界面往往能大幅提升使用体验。本文将带您完整实现一个基于树莓派的人脸识别门禁系统GUI应用,涵盖从桌面端设计到嵌入式部署的全…...
基于龙芯2K1000LA的可信计算在工业边缘安全中的实践
1. 项目概述:当“可信计算”遇上工业边缘 最近在做一个工业数据采集与边缘处理的项目,客户对数据安全的要求提到了前所未有的高度。他们不仅担心数据在传输过程中被窃取,更担心边缘设备本身被恶意篡改,导致采集的数据在源头就“失…...
如何在英雄联盟国服免费体验所有皮肤:R3nzSkin换肤工具终极指南
如何在英雄联盟国服免费体验所有皮肤:R3nzSkin换肤工具终极指南 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server 想要在英雄联盟国服中免费体…...
SQL数据库如何实现数据的逻辑删除_利用状态位与查询过滤
逻辑删除应使用UPDATE修改状态字段而非DELETE物理删除,因后者导致数据不可恢复、审计困难、关联断裂;须全局统一过滤status1,建索引、用视图/ORM作用域、冗余状态列保障一致性。为什么不能直接用 DELETE 语句删数据逻辑删除本质是“假装删了”…...
tabtoy性能优化秘籍:多核并发导出与缓存加速技巧
tabtoy性能优化秘籍:多核并发导出与缓存加速技巧 【免费下载链接】tabtoy 高性能表格数据导出器 项目地址: https://gitcode.com/gh_mirrors/ta/tabtoy 在处理大量表格数据导出时,性能往往是开发者面临的主要挑战。tabtoy作为一款高性能表格数据导…...
Astra Toolbox终极指南:如何快速掌握高性能GPU加速3D重建
Astra Toolbox终极指南:如何快速掌握高性能GPU加速3D重建 【免费下载链接】astra-toolbox ASTRA Tomography Toolbox 项目地址: https://gitcode.com/gh_mirrors/as/astra-toolbox 还在为复杂的CT重建算法而烦恼吗?想要让医学影像处理和工业检测的…...
