- 博客(67)
- 资源 (1)
- 收藏
- 关注
原创 Significant Location Change
Significant Location Change(重大位置变化)” 是苹果 iOS 系统中一项用于在应用未主动运行时,监测设备位置显著变化的功能。
2025-06-06 10:52:22
1152
原创 Flutter如何支持原生View
Flutter 的平台视图机制为与原生组件集成提供了强大支持,通过合理选择实现方式(虚拟或混合)和优化策略,可以在保持 Flutter 开发效率的同时,获得接近原生的性能体验。但需注意其限制,避免在关键路径上过度使用,以保证应用的整体流畅性。
2025-06-04 17:09:02
1200
原创 详细讲解Flutter GetX的使用
Get.to():打开新页面。:通过路由名称打开新页面。Get.off():关闭当前页面并打开新页面。:关闭所有页面并打开新页面。Get.back():返回上一个页面。:返回到指定页面。:关闭指定路由页面。:打开具有参数的命名路由。GetX 是一个功能强大、易于上手的 Flutter 框架,通过统一的 API 解决了状态管理、路由和依赖注入三大痛点。其核心优势在于简洁高效和零 context 依赖,特别适合快速开发和中小规模项目。建议开发者在新项目中尝试使用,能显著提升开发体验和代码质量。
2025-06-04 16:42:34
1023
原创 Flutter知识点汇总
Flutter是Google开发的高性能跨平台移动应用开发框架,使用Dart语言编写,通过自绘UI实现跨平台一致性。其核心优势包括:热重载功能可快速预览代码修改,保留应用状态;通过Skia引擎直接渲染UI,性能接近原生;提供丰富的内置组件库。与其他框架相比,Flutter在代码复用率(接近100%)、UI一致性、性能表现等方面具有优势,但需学习Dart语言。热重载实现原理为增量编译和Dart虚拟机更新,大幅提升开发效率,尤其适合UI调试和动画调整,但对某些代码变更仍需要重启应用。Flutter架构使其成为追
2025-06-04 15:10:27
1604
原创 flutter架构解析
微任务用于处理优先级较高、需要尽快执行的任务,而事件队列用于处理响应事件、网络请求等异步任务。在 Dart 中,事件循环会不断地从微任务队列和事件队列中取出任务执行,这就是 Dart 异步编程的核心机制。
2025-05-31 22:40:56
796
原创 鸿蒙开发11-ARKUI框架
ARKUI 框架通过声明式语法、组件化体系和高效的状态管理,大幅提升了 HarmonyOS 应用的开发效率和性能。开发者可通过 DevEco Studio 快速搭建项目,结合 Flex/Grid 布局、路由导航和动画能力,构建跨设备的响应式应用。同时,合理使用性能优化技巧(如状态监听、懒加载、硬件加速)可进一步提升用户体验。建议从官方文档和 Codelabs 入手,逐步掌握 ARKUI 开发的核心技能。
2025-04-19 12:48:34
1128
原创 Flutter 与原生通信
Flutter 与原生之间的通信主要基于通道机制,包括 MethodChannel、EventChannel 和 BasicMessageChannel。
2025-04-16 17:33:27
1303
1
原创 鸿蒙开发07-interface
interface 接口名称 {属性名: 属性类型;方法名(参数列表): 返回值类型;在上述代码中,Person 接口定义了一个对象应该具有 name(字符串类型)、age(数字类型)属性,以及一个无返回值的 sayHello 方法。
2025-04-14 18:32:57
309
原创 鸿蒙开发05-ArkTS中的箭头函数和闭包并和其他语言比较
闭包是指有权访问另一个函数作用域中变量的函数。即使该外部函数执行完毕,其作用域内的变量也不会被销毁,因为闭包持有对这些变量的引用。
2025-04-14 16:39:42
895
1
原创 鸿蒙开发04-ArkTS基础(二)
在 ArkTS 里,运算符是用于执行各种操作的符号,可分为算术运算符、比较运算符、逻辑运算符、赋值运算符等。下面为你详细介绍各类运算符。
2025-04-14 15:27:06
655
原创 鸿蒙开发02--ArkTS基础
ArkTS:是一门用于开发鸿蒙应用的编程语言。,例:console.log(‘鸿蒙’, ‘Hello World’)
2025-04-14 14:36:09
790
原创 鸿蒙开发03-对象、interface、class
对象是一组键值对的集合,键为字符串,值可以是任意类型。可以使用对象字面量来创建对象。// 创建一个简单的对象age: 25,// 对象中的方法${this// 创建一个简单的对象 let person = {name : "Alice" , age : 25 , // 对象中的方法 sayHello : function() {} };// 访问对象属性 console . log(person . name);// 调用对象方法 person . sayHello();`);
2025-04-14 12:05:26
355
原创 鸿蒙开发01
HarmonyOS官网 → 一探究竟 → DevEco Studio 下载地址:https://developer.huawei.com/consumer/cn/,安装。,安装、环境配置时,建议 自定义目录,注意:路径中不要有 中文、特殊字符。
2025-04-14 11:29:20
911
原创 WebRTC解析
首选场景:需要浏览器免插件、超低延迟、强加密的实时交互万级并发直播(需结合 CDN 架构)纯音频广播(HLS 更经济)快速开发:Agora/Sendbird自主可控:Mediasoup/Jitsi移动端:Pion/Flutter-WebRTC通过合理架构设计(如 SFU/MCU 模式选择),WebRTC 可支撑从 1v1 通话到万人直播的全场景需求,是下一代实时通信系统的基石技术。
2025-02-24 11:24:23
2329
原创 RTSP协议
需求推荐协议专业级媒体控制浏览器兼容直播WebRTC 或 HTTP-FLV超低延迟(<500ms) WebRTC 或 SRT大规模直播分发传统设备兼容RTMP建议结合具体业务需求进行协议栈设计,现代系统常采用混合架构(如 RTMP 接入 + HLS 分发)。
2025-02-24 10:41:46
884
原创 rtmp协议
RTMP(Real-Time Messaging Protocol)是Adobe设计的基于TCP的实时流媒体传输协议,专为低延迟场景(如直播、视频通话)优化。消息结构由基本头(Basic Header)、消息头(Message Header)、扩展时间戳(Extended Timestamp,可选)和消息体(Message Payload)组成。默认端口1935,支持加密变种RTMPS(端口443)基于分块传输(Chunking)机制,支持消息拆解与重组。
2025-02-20 21:56:24
926
原创 rtp/rtcp协议
用途:专为实时音视频流传输设计(如VoIP、视频会议、流媒体),支持时间敏感型数据的传输。定位:运行在UDP之上(也可用TCP,但较少见),提供端到端的传输服务。核心能力:时间戳同步:解决多流同步问题(如音画对齐)。序列号跟踪:检测丢包、乱序,支持网络质量评估。负载格式无关性:负载类型标识(编码格式协商)支持任意编码格式(H.264、Opus等),通过Payload Type(PT)标识。扩展性:支持自定义头部扩展(RFC 8285)和CSRC混流标识。
2025-02-20 17:33:41
1194
1
原创 Markdown语法
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ctrl/Command + S
2025-02-20 15:41:41
899
原创 抓取iOS hci日志
将手机通过数据线连接mac,点击start开始录制,PacketLogger左上角会显示连接的iOS设备名称,手机左上角会显示蓝色的标志,这表示已经在开始录制hci日志。中下载Bluetooth for iOS的Profile,发送到iOS设备上,在设置中安装Profile。需要准备一台mac电脑,在Apple Devloper上注册账号,电脑上安装PacketLogger软件,手机上安装Bluetooth for iOS的Profile。如果没有以上状态,在PacketLogger新建一个连接。
2024-01-15 11:59:51
493
原创 iOS蓝牙扫描的坑
然后,App通常会在收到1-3个系统回调后变为正常,这个取决于SCAN_RSP的更新时间,所以具体什么时候数据能恢复正常是不确定的,1-3包只是经验值。所以,如果你的BLE设备的广播数据会发生变化,那么是需要考虑数据错乱问题的。可以对ADV_IND+SCAN_RSP增加校验,如果是错的数据就丢掉。由于苹果的这种特性,建议在前台时扫描蓝牙设备时,设置。App在收到广播包变化的第一个系统回调通常为。此时,BLE设备广播发生变化,广播数据变为。iOS此时向App广播的数据也是。在后台扫描蓝牙时,设置。
2023-06-14 10:34:48
1463
原创 MAC配置SSH
(注意,这里的 your_email@example.com 是你自己的邮箱(例如:11******@qq.com),选一般的常用的邮箱即可,不常用的邮箱一般不推荐)首次使用sourcetree获取该域名服务器下的项目时,无法把该域名下的的信息(域名,host,公钥)写入本地的konwn_hosts(目录:~/.ssh/)文件中的。复制文件内容,粘贴到github等网站的SSH key里,标题可以随便起,大功告成!默认会在相应路径下(~/.ssh)生成id_rsa和id_rsa.pub两个文件,
2023-02-06 18:12:16
12005
1
原创 08、Flutter开发创建项目及其案例(三)
一、自定义Widget此次例子中,项目就是一个大的widget标题的Widget:使用一个Text Widget完成;描述的Widget:使用一个Text Widget完成;图片的Widget:使用一个Image Widget完成;上面三个Widget要垂直排列,我们可以使用一个Column的Widget另外,三个展示的标题、描述、图片都是不一样的,所以我们可以让Parent Widget来决定内容:创建三个成员变量保存父Widget传入的数据class ProductItem exte
2021-05-24 19:19:10
327
原创 07、Flutter开发创建项目及其案例(二)
2.3、代码改进2.3.1、改进样式我们可能希望文字居中显示,并且可以大一些;居中显示: 需要使用另外一个Widget,Center;文字大一些: 需要给Text文本设置一些样式;我们修改代码如下:我们在Text小部件外层包装了一个Center部件,让Text作为其child;并且,我们给Text组件设置了一个属性:style,对应的值是TextStyle类型;import 'package:flutter/material.dart';main(List<String> a
2021-05-10 15:20:21
351
1
原创 06、Flutter开发创建项目及其案例(一)
一. 创建Flutter项目创建Flutter项目有两种方式:通过命令行创建 和 通过开发工具创建1.1. 通过命令行创建通过命令行创建非常简单,在终端输入以下命令即可:**注意:**Flutter的名称不要包含特殊的字符,另外不可以使用驼峰标识创建完之后使用自己喜欢的开发工具打开即可flutter create learn_flutter1.2. 通过开发工具创建我这里也可以直接通过Android Studio1.3. 默认程序分析我们讲创建的应用起来跑在模拟器上(我这里选择iPh
2021-05-09 18:59:36
502
1
原创 Carthage安装使用
Carthage介绍Carthage是GitHub上开源的、用于Cocoa开发的三方依赖管理工具。GitHub地址:https://github.com/Carthage/Carthage通过Carthage,我们在iOS项目的开发中可以很方便的对三方依赖进行配置管理。Carthage的原理,简而言之,是通过配置文件Cartfile指定所依赖的三方框架,Carthage通过分析配置文件的内容,通过从github、git仓库或二进制包URL获取依赖,生成为同时包含模拟器和真机目标代码的.framewor
2021-05-07 20:44:45
883
原创 05、Flutter开发Dart的异步(二)
三. Dart的异步补充3.1. 任务执行顺序3.1.1. 认识微任务队列在前面学习学习中,我们知道Dart中有一个事件循环(Event Loop)来执行我们的代码,里面存在一个事件队列(Event Queue),事件循环不断从事件队列中取出事件执行。但是如果我们严格来划分的话,在Dart中还存在另一个队列:微任务队列(Microtask Queue)。微任务队列的优先级要高于事件队列;也就是说事件循环都是优先执行微任务队列中的任务,再执行 事件队列 中的任务;那么在Flutter开发中,哪
2021-05-04 19:04:03
222
原创 04、Flutter开发Dart的异步(一)
一. Dart的异步模型1.1. Dart是单线程的1.1.1. 程序中的耗时操作开发中的耗时操作:在开发中,我们经常会遇到一些耗时的操作需要完成,比如网络请求、文件读取等等;如果我们的主线程一直在等待这些耗时的操作完成,那么就会进行阻塞,无法响应其它事件。如何处理耗时的操作呢?针对如何处理耗时的操作,不同的语言有不同的处理方式。处理方式一:多线程,比如Java、OC、Swift、C++,我们普遍的做法是开启一个新的线程(Thread),在新的线程中完成这些异步的操作,再通过线程间通信的
2021-05-04 18:47:11
335
原创 03、Flutter开发Dart-函数
1. 函数1.1. 函数的基本定义Dart是一种真正的面向对象语言,所以即使函数也是对象,所有也有类型, 类型就是Function。这也就意味着函数可以作为变量定义或者作为其他函数的参数或者返回值.函数的定义方式:返回值 函数的名称(参数列表) { 函数体 return 返回值}按照上面的定义方式, 我们定义一个完整的函数:int sum(num num1, num num2) { return num1 + num2;}Effective Dart建议对公共的API,
2021-05-04 16:29:48
489
原创 02、Flutter开发Dart-数据类型
一、 数据类型1.1. 数字类型对于数值来说,我们也不用关心它是否有符号,以及数据的宽度和精度等问题。只要记着整数用int,浮点数用double就行了。不过,要说明一下的是Dart中的int和double可表示的范围并不是固定的,它取决于运行Dart的平台。// 1.整数类型intint age = 18;int hexAge = 0x12;print(age);print(hexAge);// 2.浮点类型doubledouble height = 1.88;print(heig
2021-05-04 16:27:50
318
原创 01、Flutter开发Dart安装与定义变量
一、安装Dart为什么还需要安装Dart呢?在安装Flutter SDK的时候,它已经内置了Dart了,我们完全可以直接使用Flutter去进行Dart的编写并且运行。但是,如果你想单独学习Dart,并且运行自己的Dart代码,最好去安装一个Dart SDK。1.2、下载Dart SDK到Dart的官方,根据不同的操作系统下载对应的Dart官方网站无论是什么操作系统,安装方式都是有两种:通过工具安装和直接下载SDK,配置环境变量1.通过工具安装Windows可以通过Chocolateym
2021-05-04 16:10:25
410
原创 音视频01-mac环境搭建
1 FFmpeg1.1 FFepeg安装在Mac环境中,直接使用Homebrew安装FFmpeg即可。终端执行:brew install ffmpeg安装完毕后,如果能成功在命令行查看FFmpeg的版本号,那说明已经安装成功。ffmpeg -version1.2 目录结构通过brew install安装的软件会存放到/usr/local/Cellar目录中,通过以下命令可以打开FFmpeg的安装目录。cd /usr/local/Cellar/ffmpegopen .bin
2021-03-29 13:57:57
183
原创 githubhosts配置
好用的工具:SwitchHosts添加链接描述如何操作操作系统的 hosts 文件Windows 下在: C:/Windows/system32/drivers/etc/hosts苹果 Mac OSX 和 Ubuntu 等linux系一般在:/etc/hostsmac可command+shift+G前往/private文件夹,hosts文件在etc文件夹下,可以直接访问配置文件。hosts 文件内关于 github IP 地址的内容199.232.69.194 github.global.
2021-03-28 15:36:46
2482
1
原创 flutter开发mac环境搭建
一、flutter SDK下载1、官网下载地址:https://flutter.dev/docs/development/tools/sdk/releases?tab=macos选择下载和自己操作系统的版本且稳定的Stable版本。2、下载之后解压,选择保存路径,建议保存到系统根目录,或者资源库,不建议保存到下载、桌面等地方,避免误操作。flutter环境变量配置1、因为需要在终端执行flutter命令,所以需要flutter环境变量,mac配置环境变量需要编辑~/.bash_profile文件。
2021-01-04 11:12:35
539
原创 新mac安装CocoaPods完整流程
背景新入职公司,分配一台全新MacBook pro,借此机会梳理一下cocoapods的完整安装流程。cocoapods安装依赖关系cocoapods安装需要ruby,更新ruby需要rvm,下载rvm需要gpg,下载gpg需要homebrew,所以安装顺序是homebrew->gpg->rvm->ruby-cocoapods,注意这是完整流程,如果只是更新做cocoapods更新操作即可,不需要从第一步开始。一、安装homebrew终端命令:/bin/bash -c "$(c
2020-12-12 17:45:49
3688
5
原创 flutter开发-MAC终端配置的环境变量失效问题
实践问题:mac在配置好环境变量之后,同步检测成功,查看版本一切正常,重启终端或者vscode之后,编译代码出现bin/sh: dart: command not found问题。问题原因:mac装了zsh,zsh加载的是~/.zshrc 文件,而没有加载 ~/.bash_profile文件。解决方法:1、终端 cd到~/.zshrc文件位置(该文件路径一般为/Users/用户名/.zshrc),执行指令:open -e .zshrc2、在最后一行加上source ~/.bash_profile*
2020-10-27 18:02:25
949
1
原创 IOS-swift状态栏设置Status bar style
更改状态系统颜色setNeedsStatusBarAppearanceUpdate()override var preferredStatusBarStyle: UIStatusBarStyle { let _ = super.preferredStatusBarStyle return UIStatusBarStyle.lightContent}preferredStatusBarStyle不调用的问题1、删除info.plist 这个键值对 <key>UI
2020-09-14 21:59:13
1020
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人