10 2020 档案

摘要:依赖于Bloc Package升级(2.0.0->6.1.0) Provider扁平化依赖通过nested实现 initialState属性删除,主要是为了兼容懒加载(巨坑,由于之前工程在初始化需要进行缓存及逻辑计算,导致初始化函数机构混乱,再加上受限于先于flutter独特的初始化方法,没办法通过 阅读全文
posted @ 2020-10-31 03:35 阿甘左 阅读(273) 评论(0) 推荐(0) 编辑
摘要:App业务逻辑处理,活动,结果通知 吸引用户眼球,提高用户留存度 特殊场景的数据交互处理,如后台通知 通知分类 远程通知 Alert通知 活动介绍 支持声音(资源,) 支持多媒体,依赖扩展提供,文本,可翻译 支持锁屏便捷的Action处理,需要注册分类 支持角标,app启动图片设置 静默通知(支持后 阅读全文
posted @ 2020-10-31 02:03 阿甘左 阅读(680) 评论(0) 推荐(0) 编辑
摘要:概览 Provider 4.3相比3.0系列版本有非常重大的改变,ValueDelegate被替代, MultiProvider的children组织方式也进行了变更,采用Nested的方式实现,另外增加了context相关的语法糖read,watch,select. SingleChildWidg 阅读全文
posted @ 2020-10-30 00:49 阿甘左 阅读(212) 评论(0) 推荐(0) 编辑
摘要:由于目前的项目采用bloc方式构建,对于的复杂页面的交互处理起来代码量越来越庞大,比如带抽屉效果的地图页面,涉及到20多个bloc之间的状态传值,而bloc的很多state的转换都依赖于widget构建,对于日益庞大的widget tree,嵌套式的bloc相互订阅,不管是从新功能开发和bug的修复 阅读全文
posted @ 2020-10-29 00:55 阿甘左 阅读(245) 评论(0) 推荐(0) 编辑
摘要:问题思考 为什么进行内存管理 页式管理中每个页表项大小的下限如何决定 多级页面解决了什么问题,带来了什么问题 内存管理的基本原理和要求 英文:(Memory Management), 计算机硬件尽管很大,但依然不能一次将所有用户的进程和系统所需要的程序全部装入主存(通常称 16G,8G内存指的就是这 阅读全文
posted @ 2020-10-27 23:55 阿甘左 阅读(736) 评论(0) 推荐(1) 编辑
摘要:源码地址: https://opensource.apple.com/tarballs/CF/官方文档介绍: https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html#//apple_ref/do... 阅读全文
posted @ 2020-10-22 03:28 阿甘左 阅读(521) 评论(0) 推荐(0) 编辑
摘要:flutter 1.20.2 版本iOS WKWebView 和 UIImagePickerController 冲突临时解决方案,目前最新的版本1.22.2已经修复了,项目改动小的可以直接升级github issue地址: https://github.com/flutter/flutter/issues/65361frozen image异常情况的视图层级,对比发现开启相机后,再进入UIKit... 阅读全文
posted @ 2020-10-21 00:35 阿甘左 阅读(291) 评论(0) 推荐(0) 编辑
摘要:Jetsam管理的一种crash机制,通过Signal无法捕捉到Jetsam,iOS不支持交换空间,无RAM和DISK之间的映射,这是因为移动端大多数设备均为闪存。 Jetsam crash日志 rpages代表页的大小, pageSize" : 16384,为当前设备页框的大小4KB 通过 rpa 阅读全文
posted @ 2020-10-20 20:25 阿甘左 阅读(1382) 评论(0) 推荐(0) 编辑
摘要:考纲 发展路程 层次结构 性能指标: ## 计算机发展历程 根据物理期间来分大致可以归为4类, 电子管时代: 电子管,机器语言编程,磁带(bug诞生),主存用盐池县或磁鼓传递信息,容量小,体积大,成本高,bug多(穿卡孔,纸袋),-> 运算效率低 晶体管时代: 逻辑元件使用晶体管, 磁心存储器,软件 阅读全文
posted @ 2020-10-18 22:19 阿甘左 阅读(1165) 评论(0) 推荐(0) 编辑
摘要:dynamic load: 动态加载.它主要是用的实现库之间的动态链接,库不用被直接编译到可以执行文件中,而是在执行的时候才会去link,达到动态加载的效果.共享动态库就是利用这个原理进行的。 如下通过otool -L 可执行文件可以看到它包含了如下信息,其中@rpath/xxx和/usr/lib/ 阅读全文
posted @ 2020-10-16 01:55 阿甘左 阅读(788) 评论(0) 推荐(0) 编辑
摘要:1.permission_handler,请求系统的所有权限app_settings:, 跳转到app授权界面They are caused a new issue that flutter app could not determiner the correct localization strings## 授权实现方式集中在某个页面授权共享授权信息的storage前后台切换重新获取授权(用户在... 阅读全文
posted @ 2020-10-15 00:34 阿甘左 阅读(177) 评论(0) 推荐(0) 编辑
摘要:万能解决方案:清理Xcode缓存,重启Xcode(一般发生在切换不同scheme运行时出现此类错误)清理模拟器缓存重新配对手机(如dyld_shared_cache_extract_dylibs failed)修改Xcode的development target大于等于手机版本(如Failed to start remote service on device.) 阅读全文
posted @ 2020-10-14 23:02 阿甘左 阅读(3525) 评论(1) 推荐(1) 编辑
摘要:进程的概念 定义 是程序的一次执行过程 是一个程序及其数据在处理机上顺序执行时所发生的活动 进程是一个具有独立功能的程序在一个数据集合上运行的过程,他是系统进行资源分配和调度的一个基本单位 为了使参与并发执行的程序能够独立的运行,必须为之配置一个专门的数据结构(PCB,Process Control 阅读全文
posted @ 2020-10-14 02:20 阿甘左 阅读(531) 评论(0) 推荐(1) 编辑
摘要:操作系统发展阶段 中断处理过程 核心态和用户态 阅读全文
posted @ 2020-10-13 23:33 阿甘左 阅读(144) 评论(0) 推荐(0) 编辑
摘要:什么是未定义的行为编译器和未定义的行为之间的关系未定义行为导致的安全问题检查未定义行为的工具介绍Swift相比OC更安全一些什么是程序的未定义行为?在 ISO C++14 Standard未定义成为标准的行为,有些错误的行为没有多加检测和控制即语法检查不到的错误,语法正确,运行起来却会有错误比如除数未0,数组越界,数值类型溢出,空指针访问异常,更改字符串的字面量这些都是我们在项目中经常会碰到的.详... 阅读全文
posted @ 2020-10-13 22:16 阿甘左 阅读(229) 评论(0) 推荐(0) 编辑
摘要:size: 文件Section信息查看otool: obj砸壳xcrun: 执行本地开发工具,如simctlatos: address to symbol,符号化解析相关clang: 编译codesign: 打包签名用env: 系统环境变量设置,构建打包时用file: 文件类型查看,dwarfdump: 符号化日志文件分析用gcc: 编译工具,与clang作用类似ld: 链接库,如-all_lo... 阅读全文
posted @ 2020-10-13 20:31 阿甘左 阅读(110) 评论(0) 推荐(0) 编辑
摘要:(lldb) helpDebugger commands: apropos -- List debugger commands related to a word or subject. breakpoint -- Commands for operating on breakpoints (see 'help b' for ... 阅读全文
posted @ 2020-10-13 00:10 阿甘左 阅读(184) 评论(0) 推荐(0) 编辑
摘要:它Google推出的跨平台语言,同时支持android,iOS和windows,使用skia图形渲染引擎,渲染效率可达60FPS以上。Flutter框架如下图,它主要分为以下三层Framework: 采用纯dart编写,主要负责界面构建,手势,布局,基础服务的包装和提供,围绕着Widget树,Element树,Render树的构建和管理而展开的Engine,提供了dartvm服务器,dart运行的... 阅读全文
posted @ 2020-10-12 01:05 阿甘左 阅读(552) 评论(0) 推荐(0) 编辑
摘要:Flutter的widget渲染正常情况下一般可以达到60fps以上,作为跨平台语言为甚么有如此优势?它基于Skia引擎直接绘制Skia经过Google团队优化后,性能明显提升,如抗锯齿能力就得到了很好的改善但这并不意味着怎么写都可以达到这个水平,实际开发时需要综合考虑各方面的因数,如业务逻辑臃肿导致WidgetTree庞大,不够合理的状态刷新导致大两部必要的Widget被重新构建,各种插件的注册... 阅读全文
posted @ 2020-10-12 00:33 阿甘左 阅读(2592) 评论(0) 推荐(0) 编辑
摘要:LLVM是编译器的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序编译时间,链接时间,运行时间,以及空闲时间,对开发这保持开放,并兼容已有的脚本(来自百度百科),它的全称是Low Level Virtual MachineLLVM的优势以下来自机翻LLVM使用具有严格定义语义的简单低级语言。它包括C和C++前端。Java、Scheme和其他语言的前端正在开发中。它包括一个积极的优化器,... 阅读全文
posted @ 2020-10-10 23:59 阿甘左 阅读(2154) 评论(0) 推荐(0) 编辑
摘要:英文全称(business logic),用于处理业务逻辑,其内部实现主要是对Stream的输入和输出进行了封装,它的实现原理是利用RxDart(基于Stream封装)提供的PublishSubject和BehivorSubject实现了Event和State之间的转换,以及利用Flutter提供的 阅读全文
posted @ 2020-10-10 02:41 阿甘左 阅读(393) 评论(0) 推荐(0) 编辑
摘要:Flutter App crash日志搜集包括三部分,一部分来自于Dart code引起的异常,可以在flutter framework的main函数进行全局捕获,此外还需对Native端iOS和Android的异常进行捕获.iOS异常搜集与分析开启DWARF文件搜集获取Mach异常和Unix信号(),用于捕获系统内核的异常,在http://opensource.apple.com 可以看到内核的... 阅读全文
posted @ 2020-10-10 02:19 阿甘左 阅读(1960) 评论(0) 推荐(0) 编辑
摘要:Flutter InspectFlutter Timeline它可以用来分析UI/GPU性能,通过对标记的方法和构建,渲染过程的起始时间来统采用真机测试在profile模式下测试最贴近真实值柱子分别代表了每帧GPU和CPU的耗时,红色标示超出了基准值,渲染较为耗时.下图为CPU Flame Chart选取耗时较长的Build方法研究查看耗时较长的Build CallTree,根据Total Tim... 阅读全文
posted @ 2020-10-09 22:05 阿甘左 阅读(450) 评论(0) 推荐(0) 编辑
摘要:flutter/bin/cache/pkg/sky_engine/lib/_http/http.dart -> HttpClient//示例: var httpClient = new HttpClient(); httpClient.findProxy = (url) { return HttpClient.findProxyFromEnvironment(url, envi... 阅读全文
posted @ 2020-10-09 21:55 阿甘左 阅读(3805) 评论(0) 推荐(0) 编辑
摘要:启动时通过Flutter framework层的ui.window获取到当前系统的local,根据MaterialApp用户配置的locale进行mapping,初始化Localizations,并加载LocalizationDelegate的load方法(需要在此方法中读取本地对应的locale的翻译),然后将LocalizationDelegate所代理的具体的Localizations和内置... 阅读全文
posted @ 2020-10-09 21:51 阿甘左 阅读(1507) 评论(0) 推荐(0) 编辑
摘要:它是一个StatefulWidget, 初始化传入一个Listenable通过Listenable内部绑定了setState方法去触发子类的 build方法.子类通过继承AnimatedWidget,通过传入的Animation就能触发build方法以AnimateBuilder为例:_AnimatedState.... @overridevoid initState() {super.init... 阅读全文
posted @ 2020-10-09 21:27 阿甘左 阅读(140) 评论(0) 推荐(0) 编辑
摘要:内容来源于: objc4-750—> objct-weak.h/mm此类主要是实现管理对象的弱引用关系, 内部是通过一个hash tab来管理所有object的weak引用, 当该object引用技术为0被销毁时, 对象也会随之从引用表中删除. 通过弱引用机制, 可以避开对象的引用计数无法清0, 的循环引用(比较常见的例子是delegate之间的互相依赖)导致内存泄漏。## object-weak... 阅读全文
posted @ 2020-10-09 12:27 阿甘左 阅读(187) 评论(0) 推荐(0) 编辑
摘要:链接: https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008048-CH1-SW1Objective-C运行时的改进: https://develope... 阅读全文
posted @ 2020-10-09 12:25 阿甘左 阅读(253) 评论(0) 推荐(0) 编辑
摘要:图文混排, 文本点击事件, 文本动画(不在讨论之内,可以通过对view来处理),如果是简单的操作,可以用UITextView来处理,当需要特殊的定制化的时候可以采用CoreText,它是一个强大的文本处理框架,支持所有文本排列相关的定制化操作,配合CoreGraphics可以实现图文混排功能。实现原理CoreText是一个底层的文本绘制框架,它真正绘制的其实只是文本部分,如果涉及到图片还是需要手动... 阅读全文
posted @ 2020-10-09 12:17 阿甘左 阅读(422) 评论(0) 推荐(0) 编辑
摘要:首先开启启动原生的应用,然后初始化flutter engine,之后在开启4个Task Runners分别是Platform Task Runner: 跟Flutter Engine的所有交互(接口调用)必须发生在Platform Thread,对应的native的主线程UI Task Runner Thread(Dart Runner): UI Task Runner被Flutter Engin... 阅读全文
posted @ 2020-10-09 12:15 阿甘左 阅读(484) 评论(0) 推荐(0) 编辑
摘要:DiagnosticableTree (diagnostics.dart) Widget (framework.dart) _WidgetForTypeTests (widget_inspector.dart) PreferredSizeWidget (preferred_size.dart) AppBar (app_bar.dart) ... 阅读全文
posted @ 2020-10-09 12:10 阿甘左 阅读(572) 评论(0) 推荐(0) 编辑
摘要:Flutter局部状态管理是通过注册Element依赖实现, 为此构造了InheritedWidget和InheritedModel来实现数据状态管理。InheritedWidget中内部包括了一个泛型的data类型, 用于接受数据, 它本身是一个StatefulWidget, 用于包装child并为child提供数据, 这样以 InheritedWidget 下所有的子节点就能访问它的 data... 阅读全文
posted @ 2020-10-09 11:54 阿甘左 阅读(357) 评论(0) 推荐(0) 编辑
摘要:它是一种字体图标, 可以将svg的图像保存以字体的形式保存到ttf中,ttf文件根据对应的unicode和图片资源关联, 通过csv文件维护一份 图片名字和unicode的mapping表和一个ttf格式的字体图标文件, 可以非常方便管理资源, 也不容易出现重复的内容, 一份文件可以支持多个平台使用TTFTrueTypeFont)是Apple公司和Microsoft公司共同推出的字体文件格式.代码... 阅读全文
posted @ 2020-10-09 11:46 阿甘左 阅读(168) 评论(0) 推荐(0) 编辑
摘要:这个文件定义了Flutter很多的基础动画,主要是基于Container的各个属性的动画封装,它的实现原理根据定义的时间曲线获取对应的补间值, 然后不断的更新widget的配置信息(如果有变动), 在vsync扫描时就会不断的更新每一帧的界面连在一起看就成了动画效果, 实现它需要有时间函数曲线, 补间值, vsync同步信号1.视图更新的同步信号(Vsync)Vsync信息由flutter eng... 阅读全文
posted @ 2020-10-09 11:42 阿甘左 阅读(181) 评论(0) 推荐(0) 编辑
摘要:它是一个独立的dart执行上下文,有自己独立的空间,不能被其他的isolate直接访问,只能访问内部的资源, 其它isolate如果需要访问,只能通过对应的端口访问 当通过spawning方法生成一个新的isolate,调用spawning方法的isolate将会获得一个新的isolate如果创建成 阅读全文
posted @ 2020-10-09 11:18 阿甘左 阅读(271) 评论(0) 推荐(0) 编辑
摘要:Flutter中的异常虽然不像Native那样会直接导致app crash,但也是不容忽视的. 比如widget构建过程因为抛出异常会导致界面灰屏,又或是某个网络请求解析失败,所以针对flutter我们也需要有一套规则来捕捉异常.Flutter中常见的异常Flutter中最最常见的一行就是空指针异常了,关于可选类型这块始终是Flutter这门语言的痛点之一,总之Flutter在数据结构转换这块和可... 阅读全文
posted @ 2020-10-09 11:10 阿甘左 阅读(484) 评论(0) 推荐(0) 编辑
摘要:Future主要用于处理flutter中的异步输入事件, 通过指定不同的初始化构造函数将异步任务转化为同步执行, 提交到当前Isolate的microTask队列或eventTask队列此外还提供了遍历的方法对future进行管理, 错捕捉和拦截,future遍历, 合并, 同时还可以转换为更为灵活的Stream处理。在实际使用中应特殊注意异常的捕捉。它和Timer,Zone, Isolate密切... 阅读全文
posted @ 2020-10-09 11:08 阿甘左 阅读(566) 评论(0) 推荐(0) 编辑
摘要:数据结构(二) 阅读全文
posted @ 2020-10-09 01:21 阿甘左 阅读(134) 评论(0) 推荐(0) 编辑
摘要:Implicitly: 隐式动画, 根据文件里的描述它主要是用来修改widget在某个是个的属性, 通俗一点讲也能算作是属性动画就是在动画事件内, 根据定义的时间曲线获取对应的补间值, 然后不断的更新widget的配置信息(如果有变动), 在vsync扫描时就会不断的更新每一帧的界面连在一起看就成了动画效果, 实现它需要有时间函数曲线. 补间值, vsync1. VsyncVsync信息由flut... 阅读全文
posted @ 2020-10-09 01:18 阿甘左 阅读(566) 评论(0) 推荐(0) 编辑
摘要:Navigator简介 导航,负责管理页面之间的切换,通过内置的栈来保存各个页面的信息,App启动时,MaterialApp会自动创建一个Navigator,它的根视图就是我们配置的MaterialApp对应的Home页面。 Navigator主要功能介绍 Navigator流程简介 多个Navig 阅读全文
posted @ 2020-10-09 01:18 阿甘左 阅读(316) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示