- 博客(233)
- 收藏
- 关注
原创 RxSwift
RxSwift是Swift函数响应式编程的一个开源库,由Github的ReactiveX组织开发、维护RxSwift的目的是:让数据/事件流 和 异步任务能够更方便的序列化处理,能够使用Swift进行响应式编程RxSwift本质上还是观察者模式,并且是一个响应式的,并且可以序列化的。
2025-05-05 12:53:10
471
原创 flutter 专题 六十四 在原生项目中集成Flutter
使用Flutter从零开始开发App是一件轻松惬意的事情,但对于一些成熟的产品来说,完全摒弃原有App的历史沉淀,全面转向Flutter是不现实的。因此使用Flutter去统一Android、iOS技术栈,把它作为已有原生App的扩展能力,通过有序推进来提升移动终端的开发效率。目前,想要在已有的原生App里嵌入一些Flutter页面主要有两种方案。一种是将原生工程作为Flutter工程的子工程,由Flutter进行统一管理,这种模式称为统一管理模式。
2025-04-30 11:34:17
1458
1
原创 flutter 专题 九十九 移动跨平台框架Flutter介绍和学习线路
Flutter是一款移动应用程序SDK,一份代码可以同时生成iOS和Android两个高性能、高保真的应用程序。Flutter目标是使开发人员能够交付在不同平台上都感觉自然流畅的高性能应用程序。我们兼容滚动行为、排版、图标等方面的差异。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。
2025-04-30 11:33:34
887
原创 flutter 专题 五十九 Flutter 1.22 正式版发布
继 9 月 23 号发布 Flutter Windows 内测版 之后刚过几天,Flutter 官方在昨夜凌晨正式发布了 Flutter 1.22。本次版本的升级又带来了新一轮的功能发布,性能改进和问题修复。恰逢移动平台新版本(iOS 14/Android 11)的发布季,此次的版本更新保证了 Flutter 应用在 Android 11 和 iOS 14 上的兼容性,面向 iOS 14,本次更新包括了对 Xcode 12,新 Icon 的更新以及 App Clips 功能的预览。
2025-04-30 11:33:15
996
原创 flutter 专题 一百零四 Flutter环境搭建
Flutter 是Google开发的一个移动跨平台(Android 和 iOS)的开发框架,使用的是 Dart 语言。和 React Native 不同的是,Flutter 框架并不是一个严格意义上的原生应用开发框架。Flutter 的目标是用来创建高性能、高稳定性、高帧率、低延迟的 Android 和 iOS 应用。并且开发出来的应用在不同的平台用起来跟原生应用具有一样的体验。
2025-04-30 11:32:41
993
原创 flutter 专题 五十七 使用Jenkins搭建Flutter自动化打包
构建环境模块需要安装一个NodeJS插件,此时先点击保存按钮保存配置好的参数,然后点击左上角的Jenkins,找到系统管理,点击管理插件,点击可选插件,在过滤条中输入"NodeJS",查找到NodeJS Plugin插件,直接安装此插件。安装完成后回到系统管理,点击Global Tool Configuration工具,找到NodeJS选项配置插件,自定义别名,安装目录填写“/usr/local”,点击左下角保存按钮。源码管理模块,配置的是SVN的地址及账号,如果使用的是Git,选择Git即可。
2025-04-30 11:32:20
718
原创 flutter 专题 五十八 关于Flutter提示Your Xcode project requires migration的错误
2,然后,在【 Runner target build settings Build Phases 】>【Link Binary With Libraries】和【Link Binary With Libraries】 > 【Link Binary With Libraries】中确认是否删除,如下图所示。1,首先,使用Xcode打开项目(ios/Runner.xcworkspace ),在Flutter文件下删除App.framework 和 Flutter.framework的引用,如下图所示。
2025-04-30 11:32:08
501
原创 flutter 专题 六十一 支持上拉加载更多的自定义横向滑动表格
不过,这个组件有一个问题是不支持下拉,因为很多场景中,对于这种数据比较多的情况,我们需要对数据进行分页加载,给予此,我们需要对flutter_horizontal_data_table进行改造,增加支持上拉加载更多和下拉刷新的功能。于是,改造后的代码如下所示。来实现,不过,我试了下,效果并不好,至于为什么,大家可以自己试一下。基于这个原理,我们可以在列表滚动到列表底部之前,请求下一页的数据,即我们可以进行如下的判断。,看了下示例,也满足我的开发需要,并且我使用2000条数据进行测试,也没有卡顿的问题。
2025-04-30 11:31:52
653
原创 flutter 专题 五十六 Google 2020开发者大会Flutter专题
在早期的hybird开发模式中,前端和Native交互时需要native双端为JS提供接口。这种情况下如何规范命名,参数等就成了一个问题,如果单独维护一份协议文件,三端依照协议文件进行开发,很容易出现协议更改后,没有及时同步,又或者在实际开发过程没有按照规范,可能导致各种意外情况。
2025-04-30 11:31:35
950
原创 flutter 专题 一百零五 Flutter开发之Http网络请求
Http网络请求是一门开发语言里比较常用和重要的功能,主要用于资源访问、接口数据请求和提交、上传下载文件等等操作,Http请求方式主要有:GET、POST、HEAD、PUT、DELETE、TRACE、CONNECT、OPTIONS。本文主要GET和POST这两种常用请求在Flutter中的用法,其中对POST将进行着重讲解。Flutter的Http网络请求的实现主要分为三种:io.dart里的HttpClient、Dart原生http请求和第三方库实现。
2025-04-21 23:23:48
1222
原创 flutter 专题 六十 Flutter事件分发流程简析
不管是原生Android、iOS还是JavaScript,只要是涉及手势交互都会有事件的分发处理。和原生Android、iOS的事件分发的步骤和原理一样,Flutter的事件分发总体也由手势触发、拦截和响应等几个部分构成。Android事件分发。
2025-04-21 11:26:41
567
原创 flutter 专题 一百零二在Android原生项目中集成Flutter
flutter是google的跨平台开发框架, 他和react native及weex框架的最大差别是flutter不使用原生控件而使用gdi按帧渲染, 个人理解非常类似windows时代的DirectUI。本文将介绍如何在一个已有的安卓项目中添加flutter, 使得部分新功能采用flutter移植的基本思想是新建一个flutter功能 和安卓工程对比看看差异在哪里, 并从flutter工程复制一些代码到安卓工程操作过程目录结构一个android studio工程的目录结构是这样的。
2025-04-21 11:26:21
277
原创 flutter 专题 六十六 Flutter Dio包网络请求抓包解决方案
,使用得最多的就是Dio请求库。因为相比Http请求库和HttpClient请求库,Dio库不仅支持常见的网络请求,还支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时等操作。不过,默认情况下,Dio进行网络请求时是不支持抓包的,所以如果要进行抓包,就需要对Dio进行请求封装,并编写代理代码。
2025-04-21 11:26:01
829
1
原创 flutter 专题 六十七 首页 图文专栏 Flutter入门与实战 Flutter开发之Dart DevToolsFlutter入门与实战
Flutter是Google开源的一个跨平台 UI 工具包,可以帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web、桌面和嵌入式平台。同时,它也是Google未来的 Google Fuchsia 应用构建的主要方式。目前,Flutter完全开源、免费,拥有宽松的开源协议,适合商业项目。
2025-04-21 11:25:39
719
原创 flutter 专题 六十五 Flutter自定义弹框
需要说的是,自定义的Dialog的根组件需要使用Material,不然的话,Dialog界面的文字下面会出现黄色的下划线,导致这种情况发生的原因是因为,Text widget 隶属于Material 风格下的组件,如果根节点不是Material 相关组件,则会使用默认带黄色下划线的格式。对于这种样式,我们可以选择自定义Dialog,具体的样式可以根据自己的需要进行修改。例如,下面是我的实现,由于文本是一个列表,所以我需要新建一个实体类,如下所示。最后,在需要使用的地方调用一下这个组件即可,如下所示。
2025-04-21 11:25:19
309
原创 flutter 专题 六十三 Flutter入门与实战作者:xiangzhihong8Fluter 应用调试
目前,Flutter一共提供了三种运行模式,分别是Debug、Release和Profile模式。其中,Debug模式主要用在软件编写过程中,Release模式主要用于应用发布过程中,而Profile模式则主要用于应用性能分析时,每个模式都有自己特殊的使用场景。Debug模式Debug模式又名调试模式,Debug模式可以同时在物理设备、仿真器或者模拟器上运行应用。默认情况下,使用flutter run命令运行应用程序时就是使用的Debug模式。
2025-04-21 11:24:56
1398
原创 swift-12-Error处理、关联类型、assert、泛型_
Swift中可以通过Error协议自定义运行时的错误信息函数内部通过throw抛出自定义Error,可能会抛出Error的函数必须加上throws声明throw SomeError.illegalArg("0不能作为除数")需要使用try调用可能会抛出Error的函数。
2025-04-19 22:55:34
504
原创 效率工具- git rebase 全解
我们发现分享rebase全文都是围绕优化分支提交记录来举例子介绍该命令,我个人觉得这也就是该命令的核心之处。在学习rebase之前我日常使用的基本都是merge导致commit记录过于混乱。
2025-04-12 21:54:57
1838
原创 swift-11-init、deinit、可选链、协议、元类型
如果初始化器调用一个可失败初始化器导致初始化失败 ,那么整个初始化过程都失败 ,并。可失败初始化器可以调用非可失败初始化器,非可失败初始化器调用可失败初始。()这里就调用的是子类的init(),确保调用子类的cls.上面进行强制解包可以调用,但是强制解包导致crash。可以用一个非可失败初始化器重写一个可失败初始化器,)调用成功,必须也要有init(),因此在。.Type 可能是子类,cls.定义隐式解包的可失败初始化器。实现执行完毕后会调用父类的。且之后的代码都停止执行。
2025-04-06 23:03:29
477
原创 swift-10汇编分析多态原理、初始化
结构体 编译完就知道调用谁类 (类似c++ 的虚函数表) 12直接将对象将来要调用的函数内存地址提前放进类型信息里面,这些类型信息编译完就确定你将来要调用谁,运行过程过程中就去那块内存里面找方法的存储。
2025-04-06 10:22:29
271
原创 swift-08-属性、汇编分析inout本质
类似于成员变量这个概念存储在实例的内存中结构体、类可以定义存储属性枚举不可以定义存储属性(因为枚举只存储关联值和case)
2025-04-05 10:42:27
246
原创 swift-oc和swift block和代理
1.1、swift 闭包表达式作为参数的形式。2.1、swift 代理表达式作为参数的形式。1.2、swift 闭包表达式作为属性。1.3、oc 闭包表达式作为参数的形式。2.2、swift 代理表达式作为属性。2.3、oc 代理表达式作为参数的形式。1.4、oc 闭包表达式作为属性。2.4、代理 闭包表达式作为属性。
2025-04-04 16:42:45
379
原创 flutter 专题 六十八 Flutter 多图片上传
如果要求不高,Flutter图库选择可以使用官方提供的image_picker,如果需要多选,那么可以使用multi_image_picker插件库。multi_image_picker库支持图库管理,多选,拍照,当然还可以自定义资源管理界面。multi_image_picker的使用也比较简单,首先,需要在pubspec.yaml配置文件中添加multi_image_picker库的依赖,如下所示。然后,我们做一个测试的按钮,代码如下。然后,我们编写逻辑代码,如下所示。
2025-04-04 10:48:07
310
原创 flutter 专题 六十九 -Flutter开发之Flare动画
Flutter的动画大体可以分为使用AnimationController 和Animation控制的基础动画、使用 Hero的转场动画和使用CustomPainter 的自定义动画三大类。除此之外,Flutter还支持矢量动画,是一种类似Android开发中的Lottie动画。Flare是一家可以快速制作矢量动画的网站,提供专门的Flutter组件来承载网站导出的动画文件,使用Flare创建的动画不仅可以有效减少安装包的体积,还能创建更加复杂绚丽的动画体验。
2025-04-04 10:47:54
1155
原创 flutter 专题 七十三Flutter打包未签名的ipa
打包之前,需要先从第三方获取到iOS证书(.p12)和描述文件(.mobileprovision),然后然后导入iOS证书(.p12)到本地,一般双击即可。然后,我们使用Xcode打开Flutter的iOS工程,如下图所示。此处,我们选择 Export 导出,然后把文件里面的 Runner.ipa 进行签名即可。然后,我们导出ipa。然后,打开Xcode ,在导航栏中选择 Product > Archive 以生成构建档案,,等待完成后会自动弹出如下界面。,然后才能出现后面的 2,3,4。
2025-04-04 10:47:38
333
原创 flutter 专题 九十六 Flutter开发之常用Widgets
上一篇,我们介绍了,接下来,我们看一下Flutter开发中一些比较常见的Widget。Flutter Widget采用现代响应式框架构建,这是从 React 中获得的灵感,中心思想是用widget构建你的UI。Widget描述了他们的视图在给定其当前配置和状态时应该看起来像什么。当widget的状态发生变化时,widget会重新构建UI,Flutter会对比前后变化的不同, 以确定底层渲染树从一个状态转换到下一个状态所需的最小更改,类似于React/Vue中虚拟DOM的diff算法。
2025-04-04 10:47:05
569
原创 flutter 专题 九十七 Flutter开发之导航与路由管理
这和原生开发类似,无论是Android还是iOS,导航管理都是通过维护一个路由栈来实现的,路由入栈(push)操作对应打开一个新页面,路由出栈(pop)操作对应页面关闭操作。Navigator是Flutter应用开发中的一个路由管理的widget,它通过一个栈来管理一个路由widget集合。路由(Route),在移动开发中通常用来表示移动应用的页面(Page),具体来说,Route在Android中通常指一个Activity,在iOS中指一个ViewController。
2025-04-04 10:46:51
992
原创 flutter 专题 一百 Flutter技术全解析
自定义 Android 涉及 flutter.jar、libflutter.so(在 flutter.jar 中)、gen_snapshot、flutter.gradle 和 flutter_tools。在自定义 Flutter 时,需要注意以下事项:1. 将 Android 中的目标设置为 armeabi。这是构建过程的一部分,逻辑是在 flutter.gradle 中定义的。如果要应用程序通过 armeabi 支持 armv7/arm64,必须修改 Flutter 的默认逻辑。
2025-04-04 10:46:26
815
原创 flutter 专题 七十 Flutter应用开发之webview_flutter插件
在移动应用开发中,经常会遇到加载网页的需求,打开网页通常有两种方式,即在应用内使用内置的组件打开和使用系统自带的浏览器打开。不过,在Flutter应用开发中,由于官方并没有提供类似Webview的网页加载组件,所以如果项目中涉及网页加载需要使用第三方插件库,如webview_flutter、flutter_webview_plugin等。
2025-03-29 22:58:37
614
原创 flutter 专题 七十二 Flutter 应用开发之Bloc模式
BLoC是Business Logic Component的英文缩写,中文译为业务逻辑组件,是一种使用响应式编程来构建应用的方式。BLoC最早由谷歌的Paolo Soares和Cong Hui设计并开发,设计的初衷是为了实现页面视图与业务逻辑的分离。如下图所示,是采用BLoC模式的应用程序的架构示意图。使用BLoC方式进行状态管理时,应用里的所有组件被看成是一个事件流,一部分组件可以订阅事件,另一部分组件则消费事件,BLoC的工程流程下图所示。
2025-03-29 22:58:18
767
原创 flutter 专题 七十一 Flutter 自定义单选控件
对于分段组件大家肯定不会陌生,主要是实现多个分段,实现单选功能,效果如下图。});}else {});使用的时候,只需要按照构造函数传入对应的参数即可。当然,开发中还可以遇到下面这种带圆角的按钮,效果如下。//只能支持两个按钮单选@override。
2025-03-29 22:58:02
512
原创 flutter 专题 七十六 Flutter 时间选择组件
在Flutter 应用开发过程中,或多或少的都会涉及到时间选择器相关的内容。Flutter默认提供了DatePicker日期选择器,如果对样式没有特殊的要求,那么可以使用它来进行时间的选择,默认的样式如下所示。可以发现,默认的样式并不是很友好。通常在移动应用开发中,App的涉及多是参考iOS的设计来的,所以这时候,多半需要进行自定义组件了。不管,为了快速的进行开发我们可以选择一些第三方的组件库,如。实际使用时候,使用showCupertinoModalPopup组件展示出来即可,如下所示。
2025-03-29 22:57:42
597
1
原创 flutter 专题 七十五 -Flutter开发之动态权限
众所周知,Android在6.0版本后将权限修改成了动态权限,而iOS则一直使用的是动态权限,所以在Flutter应用开发中如果涉及到一些危险权限,就需要进行动态申请,动态申请权限可以使用Flutter的。
2025-03-29 22:57:25
610
原创 flutter 专题 七十四 Flutter开发之动画
动画作为产品的重要组成部分,是提升用户体验的重要方式,一个恰当的动画不仅能够缓解用户因为等待而带来的情绪焦躁,还会增加应用的整体用户体验。因此,在应用中增加动画的相关功能,可以增强用户的粘性。
2025-03-29 22:57:07
910
原创 swift-7-汇编分析闭包本质
1.1 常规函数的分析 print(MemoryLayout.stride(ofValue: fn )) // 16 这个计算出来是16个字节但是 %rax 只能存8个字节,fun函数怎么返回16个的,进去看看1.2 fn1 占用多少字节 捕获变量的情况 28从下边可以看出alloc %rax 堆空间里面的地址都没有被修改 通过分析 在 fn1 里面的16 个字节 前八个存的是函数地址,后八个存的是堆地址,那么在这里函数调用就不会是 callq + 写死的地址 而是从上面的地址取出前8个函数地址来调
2025-03-29 19:58:34
441
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人