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

Flutter中的Extension关键字

目录

前言

一、什么是扩展(Extension)

二、扩展的语法

三、示例:为String 添加扩展方法

四、使用扩展的场景

五、复杂示例:为DateTime添加扩展


前言

        在 Dart 和 Flutter 中,extension 关键字允许开发者为现有的类添加新的功能,而无需修改原有类的代码。这种特性叫做扩展(extension),它使代码更加灵活且易于组织,有助于避免继承带来的复杂性。以下是关于 extension 的详细介绍。

一、什么是扩展(Extension)

        扩展是一种在不修改原始类代码的情况下,为现有类添加功能(方法或属性)的方式。它通常用于添加便捷的方法、格式化函数、数据转换等。在 Flutter 中,扩展非常适合用于扩展 String、DateTime 等基础类或 Flutter 的 UI 组件。       

二、扩展的语法

        在 Dart 中,扩展通过 extension 关键字定义,并使用 on 指定要扩展的类型。

extension ExtensionName on Type {// 新的方法或属性ReturnType methodName(parameters) {// 方法的实现}
}

三、示例:为String 添加扩展方法

        下面是一个为 String 类添加新方法的例子,用于将字符串的首字母大写:

extension StringExtensions on String {String capitalize() {if (this.isEmpty) return '';return this[0].toUpperCase() + substring(1);}
}void main() {String text = 'hello';print(text.capitalize()); // 输出:Hello
}

四、使用扩展的场景

        Extension的使用场景如下:

  1. 格式化数据:例如为 DateTime 类型添加格式化方法。
  2. 简化常用操作:例如为 List 添加快捷方法,如 toMap()。
  3. 代码组织和复用:把特定类型的实用方法集中在扩展中,增强代码可读性

五、复杂示例:为DateTime添加扩展

        以下示例展示了如何为 DateTime 类型添加方法来格式化日期和计算时间差。

extension DateTimeExtensions on DateTime {String formattedDate() {return '$year-${month.toString().padLeft(2, '0')}-${day.toString().padLeft(2, '0')}';}int daysUntil(DateTime other) {return other.difference(this).inDays;}
}void main() {DateTime now = DateTime.now();DateTime future = DateTime(2024, 12, 31);print(now.formattedDate()); // 输出当前日期:例如 2024-10-31print(now.daysUntil(future)); // 输出距离2024-12-31的天数
}

        Dart 的扩展提供了一种轻量、灵活的方式来增强类型的功能,而不引入复杂的继承关系。通过使用 extension 关键字,可以让代码更具复用性和可读性,是 Flutter 项目中组织代码的有效方式。

相关文章:

Flutter中的Extension关键字

目录 前言 一、什么是扩展(Extension) 二、扩展的语法 三、示例:为String 添加扩展方法 四、使用扩展的场景 五、复杂示例:为DateTime添加扩展 前言 在 Dart 和 Flutter 中,extension 关键字允许开发者为现有的类添加新的功能,而无需修改原有类的代…...

transformers 框架使用详解,bert-base-chinese

以 bert-base-chinese 模型为例,模型目录 model_name "C:/Users/Administrator.DESKTOP-TPJL4TC/.cache/modelscope/hub/tiansz/bert-base-chinese" bert-base-chinese 模型大小只有400多兆,参数的量级在百万级别,与现在动辄几十…...

STM32——ADC

目录 1、ADC的介绍 2、ADC主要特征 3、ADC结构与引脚 4、ADC配置流程 5、示例(光敏电阻的ADC采样) 6、提示 7、结语: 1、ADC的介绍 12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部 信号…...

Unity SRP学习笔记(二)

Unity SRP学习笔记(二) 主要参考: https://catlikecoding.com/unity/tutorials/custom-srp/ https://docs.unity.cn/cn/2022.3/ScriptReference/index.html 中文教程部分参考(可选): https://tuncle.blog/c…...

数据库第五次作业

一要求 二建库建表 触发器 存储过程 三查询 触发器 1 建立触发器,订单表中增加订单数量后,商品表商品数量同步减少对应的商品订单出数量,并测试 测试 2 建立触发器,实现功能:客户取消订单,恢复商品表对应商品的数量 测试 3…...

健身房业务流程优化:SpringBoot解决方案

3系统分析 3.1可行性分析 通过对本健身房管理系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本健身房管理系统采用SSM框架,JAVA作为开发语言&a…...

【产品经理】工业互联网企业上市之路

树根互联2022年6月2日提交招股书之后,因财务资料超过六个月有效期加三个月延长期,2022年9月30日上市审核中止;2022年12月26日树根互联更新了2022年半年度财务资料,又九个月过去了,其上市进程将面临再一次中止。 处于上…...

Java学习教程,从入门到精通,Java对象和类语法知识点(20)

1、Java对象和类语法知识点 类的定义 使用class关键字定义类。类名通常使用大写驼峰命名法(PascalCase)。类与对象 类是创建对象的模板或蓝图,它定义了对象的属性和行为。对象是类的实例,它包含了类定义的数据(属性&am…...

金融场中的量化交易:民锋数据驱动策略的优势解析市

随着科技的发展,量化交易成为金融市场的重要组成部分。民锋公司通过智能算法和大数据分析,设计了一系列量化交易策略,帮助投资者实现科学投资。本文将探讨民锋在数据驱动策略上的优势,并展示如何通过量化模型在复杂的市场中获得收…...

Docker 配置镜像加速

docker 拉取代码时出现 ERROR: failed to solve: node:16: unexpected status from HEAD request to https:// xxxxxx.mirror.aliyuncs.com/v2/library/node/m…...

HTTP慢速攻击原理及解决办法

目录 引言 HTTP慢速攻击原理 解决办法 Nginx Tomcat 华宇TAS IIS 结论 引言 HTTP慢速攻击(Slow HTTP Attack)是一种拒绝服务攻击(DoS),攻击者通过故意缓慢地发送HTTP请求来耗尽服务器资源,导致合法…...

【系统面试篇】进程和线程类(1)(笔记)——区别、通讯方式、同步、互斥、锁分类

目录 一、问题综述 1. 进程和线程的区别? 2. 进程的状态有哪些? 3. 进程之间的通信方式? (1)管道 (2)消息队列 (3)共享内存 (4)信号量 &#xff08…...

[C++]——哈希(附源码)

目录 ​编辑 ​编辑 一、前言 二、正文 2.1 unorder系列关联式容器 2.1.1 unordered_map 2.1.1.1 unorderer_map的介绍 ①unordered_map的构造 ②unordered_map的容量 ③unordered_map的迭代器 ④unordered_map的元素访问 ⑤unordered_map的查询 ⑥unordered_map的修改操…...

2024中国自动化大会(CAC2024)“智慧化工及复合人才培养”平行会议圆满落幕

2024中国自动化大会于11月1-3日在青岛举行,本次大会由中国自动化学会主办,青岛科技大学(简称“青科大”)承办。北京和隆优化科技股份有限公司(简称“和隆优化”)承办了重要的“智慧化工及复合人才培养”平行…...

计算机毕业设计——ssm基于JAVA的求职招聘网站的设计与实现演示录像 2021

作者:程序媛9688开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等。 🌟文末获取源码数据库🌟感兴趣的可以先收藏起来,还有大家在毕设选题(免费咨询指导选题)&#xff0…...

跨平台Flutter 、ReactNative 开发原理

一、跨平台Flutter开发原理 Flutter是一个跨平台的应用程序开发框架,它允许你使用一组代码库来构建同时运行在Android和iOS上的应用程序。 1.1.Flutter的核心原理基于以下几点: Dart异步、Widget构建块灵活配置、自工化工具链、热重载、Skia图库、Dar…...

qt QToolBar详解

1、概述 QToolBar是Qt框架中的一个控件,用于在工具栏中显示一组操作按钮和其他控件。它提供了一种方便的方式来组织和管理应用程序中的工具和操作。工具栏通常位于软件或应用程序界面的上方,包含一系列常用工具和命令按钮,用于快速访问和执行…...

MongoDB基础介绍以及从0~1语法介绍

目录 MongoDB 教程导读 NoSQL 简介 关系型数据库遵循ACID规则 分布式系统 分布式计算的优点 分布式计算的缺点 什么是NoSQL? 为什么使用NoSQL ? RDBMS vs NoSQL NoSQL 简史 CAP定理(CAP theorem) NoSQL的优点/缺点 BASE ACID vs BASE N…...

利用Docker Compose构建微服务架构

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 利用Docker Compose构建微服务架构 引言 Docker Compose 简介 安装 Docker Compose 创建项目结构 编写 Dockerfile 前端 Dockerf…...

数据中台一键大解析!

自从互联玩企业掀起了数据中台风,数据中台这个点马上就火起来了,短短几年数据中台就得到了极高的热度,一大堆企业也在跟风做数据中台,都把数据中台作为企业数字化转型的救命稻草,可是如果我告诉你数据中台并不是万能钥…...

从零开始用 Python 做销量预测(保姆级教程)

一、为什么要学销量预测?想象你是某连锁奶茶店的运营:备货太少 → 顾客喝不到,差评 😡备货太多 → 过期倒掉,亏钱 😭销量预测(Sales Forecasting)​ 就是为了解决这个“黄金平衡点”…...

EA(Enterprise Architect)UML修改字体大小

EA(Enterprise Architect)是一个很优秀的建模工具(支持UML、数据库建模等),它安装包很小,不到100MB,还支持生成C#代码。于是,我从Rational Rose换到了EA。 EA默认的字体只有8磅&…...

基于AM62x核心板的微电网智能化改造:异构多核驱动与边缘计算实践

1. 项目概述:当嵌入式核心板遇上微电网最近在做一个挺有意思的项目,客户想把他们园区里那套老旧的微电网系统给“智能化”一下。原来的系统,说白了就是一堆继电器、PLC和工控机攒起来的,数据采集靠串口,控制逻辑写在梯…...

朱雀广告平台:3分钟了解开源广告系统的核心优势

朱雀广告平台:3分钟了解开源广告系统的核心优势 【免费下载链接】zhuque 开放源码的一站式广告平台,包含ssp/adx/dsp/dmp模块 项目地址: https://gitcode.com/gh_mirrors/zhu/zhuque 在数字营销时代,广告技术平台是企业实现精准投放和…...

Windows 11终极优化指南:用开源神器Win11Debloat快速清理系统垃圾

Windows 11终极优化指南:用开源神器Win11Debloat快速清理系统垃圾 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declu…...

SD-PPP:5分钟掌握Photoshop AI插件,让AI绘图更简单

SD-PPP:5分钟掌握Photoshop AI插件,让AI绘图更简单 【免费下载链接】sd-ppp A Photoshop AI plugin 项目地址: https://gitcode.com/gh_mirrors/sd/sd-ppp SD-PPP是一款免费开源的Photoshop AI插件,它将Stable Diffusion等先进的AI绘图…...

DownKyi:解锁B站8K超高清视频下载的5个核心优势

DownKyi:解锁B站8K超高清视频下载的5个核心优势 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等)…...

【MLOps】模型部署与监控实战:从训练到生产的完整链路

一、MLOps概述与重要性 在机器学习项目中,模型训练仅仅是第一步。将训练好的模型部署到生产环境并持续监控其性能,是确保业务价值实现的关键环节。MLOps(Machine Learning Operations)正是解决这一问题的方法论和实践体系。 1.1 什…...

Gemini模型训练数据合规性审查清单(含原始数据来源验证、合法基础映射表、数据血缘图谱工具推荐)

更多请点击: https://intelliparadigm.com 第一章:Gemini模型训练数据合规性审查总览 Gemini系列大语言模型的训练数据来源广泛,涵盖公开网页、学术文献、代码仓库及多语种图书资源。为确保其符合全球主要司法辖区的数据治理要求&#xff08…...

JMeter精准控制1 QPS的底层原理与三种实战方案

1. 这不是“设个线程数”就能搞定的事很多人第一次用Jmeter做压测,看到“我要每秒发1个请求”,第一反应是:开1个线程,Ramp-up时间设为1秒,循环次数设无限——结果一跑起来,发现TPS忽高忽低,有时…...