- 博客(229)
- 资源 (4)
- 收藏
- 关注
原创 HarmonyOS NEXT开发实战:实现高效下拉刷新与上拉加载组件(二)刷新核心逻辑与空页面集成
在上一篇文章中,我们深入探讨了如何在HarmonyOS中实现一个功能完备的空页面组件。现在,我们将进入下拉刷新和上拉加载功能的核心逻辑实现。这不仅仅是技术实现,更是对用户体验的深刻理解。本文将详细介绍如何将空页面与下拉刷新、上拉加载逻辑相结合,打造一个既高效又用户友好的交互体验。通过本文,我们不仅学习了如何在HarmonyOS中实现下拉刷新和上拉加载的核心逻辑,还了解了如何将这些逻辑与空页面组件相结合,以提供更加丰富和流畅的用户体验。
2024-10-21 12:45:55 546
原创 HarmonyOS NEXT开发实战:打造高效上拉刷新与下拉加载组件(一)空页面的设计与实现
在鸿蒙开发的世界中,用户体验至关重要。我在网络上搜寻了一番,发现现有的上拉刷新和下拉加载组件要么功能不全,要么不够优雅。因此,我决定自己动手,打造一套既美观又实用的组件。本系列文章将深入解析如何使用鸿蒙系统组件封装出优秀的上拉刷新和下拉加载控件。今天,我们将从空页面的开发开始,探索如何在鸿蒙OS中实现这一功能。通过本文,我们不仅学习了如何在鸿蒙OS中实现一个功能完备的空页面组件,还了解了如何通过资源替换和外部函数调用来增强组件的灵活性和实用性。
2024-10-21 12:44:12 414
原创 鸿蒙OS开发秘籍:打造优雅的登录状态管理系统
在鸿蒙OS开发过程中,随着应用规模的扩大,登录状态管理逐渐成为系统设计中的一个挑战。一个清晰、高效的登录状态管理系统不仅可以简化开发流程,还能提升用户体验。本文将分享一种优雅的登录状态管理设计方案,帮助开发者轻松应对复杂系统中的登录状态控制。通过本文的分享,我们学习了如何在鸿蒙OS中设计和实现一个优雅的登录状态管理系统。从认证事件的设计到认证状态的管理,再到具体的认证接口实现,每一步都是为了简化开发流程,提高系统的健壮性和可维护性。希望本文能够为鸿蒙OS的开发者提供实用的参考和启发。
2024-09-10 13:56:17 241
原创 鸿蒙OS模块化开发实战:独立路由与解耦策略
在现代软件开发中,模块化设计是提高项目可维护性和可扩展性的关键。鸿蒙OS以其先进的架构设计,为开发者提供了强大的模块化开发工具。本文将深入探讨如何在鸿蒙OS中实现模块的独立路由配置,以降低模块间的耦合度,实现单模块的独立运行和开发。一个清晰的架构设计是模块化开发的基石。- baselibrary (底层公共框架库)- 包含项目中所有共用的基础功能和工具类。- commons (业务公用框架库)- uicomponents (公用页面,组件库)- 存放所有可复用的UI组件和页面模板。
2024-09-10 13:55:31 344
原创 鸿蒙OS高级技巧:打造个性化动态Swiper效果
在鸿蒙OS的广阔天地中,开发者们有机会创造出令人惊叹的用户体验。最近,我着手设计一款具有独特滑动效果的Swiper组件,它在滑动时能够迅速进入视野,同时巧妙地将旧的cell隐藏到视线之外。本文将分享如何利用鸿蒙的Swiper组件,实现这一引人入胜的动态效果。为了实现平滑的动画效果,我们定义了三次贝塞尔曲线函数和线性函数。这些函数将用于计算cell在滑动过程中的尺寸、位置和层级变化。// 计算三次贝塞尔曲线的值// 计算线性插值的结果。
2024-09-05 14:04:47 877
原创 鸿蒙OS创新实践:动态声控话筒开发指南
在鸿蒙OS的生态中,开发者们不断探索和创新,以期为用户带来更丰富的交互体验。最近,我萌生了一个想法:制作一个能够随着声音动态变化的话筒组件。尽管网络上缺乏现成的参考案例,但我决定亲自动手,将这一创意变为现实。本文将深入解析这一开发过程,分享我的实战经验和技术细节。通过本文的详细解析,我们不仅实现了一个动态声控话筒组件,还深入了解了鸿蒙OS中的绘图API和动态效果实现方法。希望这篇文章能够为其他开发者提供灵感和指导,共同推动鸿蒙生态的创新与发展。
2024-09-05 10:07:24 565
原创 鸿蒙实战开发:网络层的艺术——优雅封装与搭建指南(下)
在前两篇文章中,我们深入探讨了网络层的封装和优化技巧。本文将带您走进网络层的实战应用,从架构设计到具体实现,一步步指导您如何使用我们精心构建的网络框架。本文详细介绍了如何使用我们编写的网络框架,从架构设计到具体实现,每一步都体现了对高效、可维护代码的追求。希望这些知识能够帮助您在鸿蒙开发中更加得心应手,构建出更加健壮和用户友好的应用。
2024-06-18 14:22:34 673
原创 鸿蒙实战开发:网络层的艺术——优雅封装与搭建指南(中)
在鸿蒙开发的广袤天地中,网络层的搭建与封装无疑是构建高效、稳定应用的基石。继上篇的探索之后,本文将继续深入网络层的优化之旅,揭秘如何通过类型转换器、请求查询附加器以及丰富的常量参数,将网络层的构建艺术推向一个新的高度。在网络请求的世界里,数据格式的转换至关重要。我们通过定义接口,实现了对请求与响应数据类型的灵活转换。通过定义一系列的常量,我们为网络请求的错误处理提供了统一的接口。这些常量不仅包括了各种网络错误的场景,还涵盖了HTTP状态码的含义,为开发者提供了清晰的指导。
2024-06-17 18:37:52 842
原创 鸿蒙实战开发:网络层的艺术——优雅封装与搭建指南(上)
在鸿蒙的广袤开发世界中,网络层作为信息交换的桥梁,其重要性不言而喻。今天,我将带领大家一同探索如何以艺术般的手法,优雅地封装鸿蒙官方的网络库,为我们的应用搭建一个高效、灵活的网络层。
2024-05-21 13:55:51 1386
原创 鸿蒙开发实战:揭秘页面与项目生命周期,实现精准监控
在鸿蒙应用开发中,每一个页面和组件都承载着特定的生命周期。这些生命周期阶段,如同生命的轨迹,记录着页面从诞生到消亡的每一个重要时刻。深入理解和监控这些生命周期,不仅能提升应用性能,还能帮助我们更好地把握用户体验。
2024-05-16 16:34:03 796
原创 鸿蒙开发实战:轻松配置多环境目录,实现高效应用部署
在鸿蒙应用的开发过程中,经常需要针对不同的环境(如开发环境、生产环境)配置不同的参数和资源。本文将深度解析如何在鸿蒙中灵活配置多环境目录,分享实战经验,让你的应用部署更加高效便捷。
2024-05-11 13:39:40 646
原创 鸿蒙开发实战:灵活定制编译选项,打造高效应用
在鸿蒙开发的广阔领域中,灵活定制编译选项是每位开发者不可或缺的一项技能。这项技能不仅影响着应用的性能表现,更直接关联到应用在不同场景下的稳定性和用户体验。在本篇文章中,我们将深入探讨鸿蒙开发中如何巧妙地定制编译选项,并分享一些实用的实战经验和专业技巧。
2024-05-08 16:30:09 879
原创 鸿蒙开发实战:智能日志定位与高效调试技巧
在鸿蒙系统的开发过程中,日志定位是一个关键的调试步骤。想象一下,如果你能够轻松地在繁杂的代码中快速定位到日志产生的位置,那将会极大地提高你的开发效率。今天,我将分享一套代码,它能帮助你实现这一目标。
2024-05-08 15:32:36 538
原创 鸿蒙开发实战:基于API 11深度解析网络管理技巧与实战应用
这些功能的实现将确保我们的网络管理类能够实时、准确地掌握网络状态,并根据状态变化做出相应的处理,从而提升应用的稳定性和用户体验。网络状态的变化,如从Wi-Fi切换到移动数据,或从有网络状态变为无网络状态,都需要应用做出相应的调整。首先,我们需要理解网络状态变化的几种主要类型:从无网络到有网络、从有网络到无网络、以及从一种网络类型切换到另一种网络类型(如从Wi-Fi切换到蜂窝数据)。首先,我们定义了网络连接状态变化时的回调函数类型,以便在网络状态变化时能够灵活地执行相应的处理逻辑。1、获取网络状态信息。
2024-04-29 10:26:18 1080
原创 鸿蒙开发实战:鸿蒙应用开发中的页面管理工具类详解
通过掌握这一工具类的核心属性和方法,开发者能够轻松应对各种页面管理挑战,为用户带来更加优质、个性化的界面体验。在鸿蒙应用开发的征程中,如何高效地管理页面布局与显示,以满足用户对于沉浸式体验、个性化StatusBar颜色等界面特性的需求,一直是开发者们关注的焦点。为此,我特别设计了一款实用的“页面管理工具类”,它具备强大的功能,能帮助开发者轻松应对各种页面管理挑战。在初始化过程中,工具类会自动获取主窗口对象、设置全屏开发状态,并计算顶部和底部安全区域的高度,为后续的页面布局与管理提供基础数据。
2024-04-28 10:55:48 1076 1
原创 跟我学企业级flutter项目:简化框架demo参考
最近很多人在问我,没有一个不错的demo,不会如何做单工程模式,如何封装网络请求,如何去做网络持久化。那么今天我将demo分享出来。现阶段还无法把我构建的flutter快速开发框架开源出来。暂时用简化demo来展示。...
2022-07-01 11:07:40 593 1
原创 flutter简单优秀的开源dialog使用free_dialog
今天我来介绍一款简单,易用的dialog,该dialog比较简洁,可以适应很多app(主要没有其他动画及以外的图片等,黑白风格可以适配多种样式的app)。如果你的app急需一款不错的dialog,并且你懒得开发,那么用这款就对了。......
2022-06-10 16:57:09 734
原创 跟我学企业级flutter项目:如何重新定制cached_network_image的缓存管理与Dio网络请求
flutter中需要展示网络图片时候,不建议使用flutter原本Image.network(),建议最好还是采用cached_network_image这个三方库。那么我今天就按照它来展开说明,我再做企业级项目时如何重新定制cached_network_image。由于我的项目网络请求采用Dio库,所以我希望我的图片库也采用Dio来网络请求,也是为了方便请求日志打印(在做APM监控时候可以看到网络请求状态,方便定位问题)。准备好mime_converter类,由于cached_network_image中
2022-06-01 11:09:45 1137
原创 跟我学企业级flutter项目:如何将你的项目简单并且快速屏幕自适应
你的flutter在小屏幕手机上出现文字丢失了么?你的flutter应用在小屏幕手机上排版出错了么?你的flutter应用在大屏幕手机上布局错乱了么?你在用flutter_screenutil做屏幕自适应么?今天我来给大家介绍一款简单不侵入代码的自适应。如果你有如下需求:1. 旧的flutter想快速屏幕适应各种手机2. 页面代码中不想增加关于适配屏幕的代码
2022-05-16 16:20:52 492 2
转载 深入浅出 Flutter Framework 之 PipelineOwner
OverviewPipelineOwner在 Rendering Pipeline 中起到重要作用:随着 UI 的变化而不断收集『 Dirty Render Objects 』 随之驱动 Rendering Pipeline 刷新 UI简单讲,PipelineOwner是『RenderObject Tree』与『RendererBinding』间的桥梁,在两者间起到沟通协调的作用。关系如上图:RendererBinding创建并持有PipelineOwner实例,Code1-第8
2022-05-10 16:07:11 304
转载 深入浅出 Flutter Framework 之 PaintingContext
Overview『 Widget 』—『 Element 』—『 RenderObject 』可称之为 Flutter Framework『三剑客』,其中 Widget、Element 都已介绍过,而 RenderObject 在这三者中属于最核心、最复杂的,涉及 Layout、Paint 等核心流程。 为了更好、更流畅地去理解 RenderObject,在正式介绍之前,需要做些准备工作,本文介绍的 PaintingContext 在 RenderObject 的绘制流程上扮演了重要角色。『Pain
2022-05-10 14:44:48 379
转载 深入浅出 Flutter Framework 之 Layer
Overview前面的文章中我们介绍过在 Flutter build、layout、render 过程中会生成 3 棵树:Element Tree RenderObject Tree Layer Tree可以说 Layer Tree 是 Flutter Framework 最终的输出产物,之后的流程就进入到 Flutter Engine 了。如上图:在build过程中,由 Element Tree 生成 RenderObject Tree (在 深入浅出 Flutter Frame
2022-05-10 14:32:46 501
转载 深入浅出 Flutter Framework 之 BuildOwner
OverviewBuildOwner在 Element 状态管理上起到重要作用:在 UI 更新过程中跟踪、管理需要 rebuild 的 Element (「dirty elements」); 在有「dirty elements」时,及时通知引擎,以便在下一帧安排上对「dirty elements」的 rebuild,从而去刷新 UI; 管理处于 "inactive" 状态的 Element。这是我们遇到的第一个 Owner,后面还有PipeOwner。整棵「Element Tree」共
2022-05-10 14:23:49 273
原创 跟我学flutter:细细品Widget(四)Widget 渲染过程 与 RenderObjectWidget
前言StatelessWidget 和 StatefulWidget 只是用来组装控件的容器,并不负责组件最后的布局和绘制。在 Flutter 中,布局和绘制工作实际上是在 Widget 的另一个子类 RenderObjectWidget 内完成的。RenderObjectWidget为RenderObjectElement提供配置信息。RenderObjectElement包装了RenderObject,RenderObject为应用程序提供真正的渲染。源码abstract class Rend
2022-05-05 15:48:29 1280
原创 跟我学flutter:细细品Widget(三)ProxyWidget,InheritedWidget
前言ProxyWidget作为抽象基类本身没有任何功能,但他有两个实现类ParentDataWidget & InheritedElement源码abstract class ProxyWidget extends Widget { const ProxyWidget({ Key? key, required this.child }) : super(key: key); final Widget child;}ParentDataWidgetParentData
2022-04-27 17:57:08 526
原创 跟我学企业级flutter项目:flutter模块化,单工程架构模式构思与实践
在原生Android开发的时候,我们经常会用到ARouter,来设计我们项目的整体架构。因为ARouter会帮助我们实现模块化的思想,那么在Flutter中如何去构建模块化的架构呢?再深入一点,如何去运行一个单一模块,不去跑整体项目呢?本篇文章将会带你学习Flutter版本下的单工程架构模式。
2022-04-26 17:06:10 3018 7
原创 跟我学flutter:细细品Widget(二)StatelessWidget&StatefulWidget
StatelessWidget和StatefulWidget是Flutter开发必不可少的。两者的区别在于state。有状态的widget需要继承StatefulWidget无状态的需要继承StatelessWidget。
2022-04-25 17:42:20 1090
原创 跟我学flutter:细细品Widget(一)Widget&Element初识
前言Everything’s a widget!WidgetFlutter 中 Widget是一个“描述一个UI元素的配置信息”,Widget就是接受元素,而不是真是绘制的显示元素。类比原生的Android开发,Widget更像是负责UI配置的xml文件,而非负责绘制组件的View。 当一个Widget状态发生变化时,Widget就会重新调用build()函数来返回控件的描述,过程中Flutter框架会与之前的Widget进行比较,确保实现渲染树中最小的变动来保证性能和稳定性。换句话说,当Widge
2022-04-22 16:49:01 1604
原创 跟我学flutter:Flutter雷达图表(一)如何使用kg_charts
本节主要讲如何使用kg_charts中的雷达图表,来绘制一个雷达图,下一章节则会对如何绘制一个可点击雷达图表进行详细说明。最近我在开发有关雷达图表的的业务,但的确在线上找不到可以快速集成的雷达图表,找到一篇文章(Flutter雷达图package)但不是很好定制化我们的业务,但其中的代码有比较好的借鉴。然后我借鉴了部分代码,进行了kg_charts的开发。
2022-04-21 11:03:50 1652
原创 跟我学flutter:在国内如何发布自己的Plugin 或者 Package
前言平时在做flutter Plugin或者 Package的时候,如果觉得自己做的还不错,想要分享到PUB库上如何操作?虽然官方已经告诉我们如何操作,但是呢由于一些特殊的原因,采用官方的方式并不能上传到PUB库上,今天就跟着我学习一下如何上传pub库吧。准备开始开始前需要你已经有一个已经开发好的库来进行提交了。比如我的这个如图红色箭头表示的是必须要存在的两个文件,如果没有的话,需要添加你的开源协议。编写你的README文档。开源协议和README我就不做介绍了,咱们来看看yaml文件需要什么
2022-04-20 15:44:25 2223
原创 跟我学flutter:我们来举个例子通俗易懂讲解异步(二)ioslate循环机制
前言我们在开发flutter应用的时候编写代码,要么是同步代码,要么是异步代码。那么什么是同步什么是异步呢?同步代码就是正常编写的代码块异步代码就是Future,async等关键字修饰的代码块一、时机不同他们区别于运行时机不同,同步代码先执行,异步代码后执行,即使你的同步代码写在最后,那也是你的同步代码执行,之后运行你的异步代码。二、机制不同异步代码运行在 event loop中,类似于Android里的Looper机制,是一个死循环,event loop不断的从事件队列里取事件然后运行。
2022-03-31 15:00:27 2147
原创 跟我学flutter:我们来举个例子通俗易懂讲解异步(一)ioslate
前言Dart是单线程的,Dart提供了Isolate,isolate提供了多线程的能力。但作为多线程能力的,却内存不能共享。但同样的内存不能共享,那么就不存在锁竞争问题。举个例子来展示作用如果一段代码执行事件很长,flutter如何开发。基本页面代码(一段代码)ElevatedButton( child: Text("登录"), onPressed: () { 执行运行代码(); }
2022-03-29 21:28:50 2134
原创 跟我学flutter:我们来举个例子通俗易懂讲解dart 中的 mixin
与java&kotlin不同的是,dart中有一个特殊的关键字mixin(mix-in),用这个关键字的类被其他类(包含)的时候,其他类就拥有了该类的方法。这样代码不通过继承(extend)就可以重用。
2022-03-24 16:20:24 2616
原创 跟我学企业级flutter项目:手把手教你制作一款低耦合空页面widget
前言如何开发一款易用的,并且可以扩展的空页面呢?那么今天我将带领大家手把手开发一款可扩展的空页面。开发前注意事项1、定义好空页面状态2、可扩展思想(用抽象或基类替代实体)3、抽离出空页面的结构空页面展示开始搭建一、页面分析空页面需要元素有:展示图片展示文案展示刷新按钮页面功能点:文案可自定义图片可自定义按钮可隐藏wiget作用范围:可包裹其他widget不包裹其他widget二、定义状态2.1 几种状态enum EmptyStatus { fai
2022-03-21 17:25:39 1586 1
原创 跟我学企业级flutter项目:如何封装一套易用,可扩展的Hybrid混合开发webview
Flutter作为基础的应用,如果要在flutter 中嵌入webview 去做Hybrid混合开发,咱们就必须要封装一套易用的webview,但网上关于flutter webview的文章极其的少。但的确也有做封装的文章,但是封装手法不够优雅,封装效果不够扩展。于是我打算把我的封装与大家分享,看我如何做到高扩展,高易用性。
2022-03-16 20:01:07 2745
原创 跟我学企业级flutter项目:如何用dio封装一套企业级可扩展高效的网络层
前言网上有很多,比如说“Flutter Dio 亲妈级别封装教程”这篇文章,该文章上有几点问题:重试机制代码错误token存取耦合很高网络请求只能针对单一地址进行访问网络请求缓存机制也不是很完美。一旦依照这样的封装去做,那么项目后期的扩展性和易用性会有一定的阻碍,那么如何做到token存取无耦合,而且还能让app多种网络地址一同请求,还可以做到针对不同请求不同超时时长处理,网络缓存还加入可自动清理的lru算法呢?那么今天这篇文章为你揭晓企业级flutter dio网络层封装。搭建前夕准备
2022-02-28 16:20:23 4244 9
原创 庖丁解牛:Android stuido中 git 操作详解
前言在开发flutter或android项目,选择用Android stuido是比较方便的,在git的可视化使用上,Android studio已经非常方便了,但是还是有很多的小伙伴,依旧用其他工具来管理git。那么今天我就来详细的介绍一下 Android stuido的git使用与操作。一、基本认知工作区项目目录下的文件可以称之为工作区暂存区添加文件git的基本使用是add到暂缓区,commit到本地仓库,push到远程仓库。...
2022-02-23 17:00:38 2859
原创 Flutter线上监控说明
概要移动端Apm系统作用:1、我们可以快速定位到线上App的实际使用情况,了解到App的奔溃、异常数据,从而针对潜在的风险问题进行预警,并进行相应的处理。2、了解App的真实使用信息,提高用户使用黏性。一、移动端常用apm指标1、崩溃率崩溃分析,是将 Android 和 iOS 平台常见的 APP 崩溃问题进行归类分析,帮助企业根据崩溃指标快速发现、定位问题。\2、UI卡顿拿Android来说:大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能。Android系统每隔大概16.6
2022-01-27 11:57:39 2413
android通过用户打包,分享apk可以知道某个用户分享的
2017-11-02
Mysql数据库文档生成工具
2016-02-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人