摘要: Flutter InspectFlutter Timeline它可以用来分析UI/GPU性能,通过对标记的方法和构建,渲染过程的起始时间来统采用真机测试在profile模式下测试最贴近真实值柱子分别代表了每帧GPU和CPU的耗时,红色标示超出了基准值,渲染较为耗时.下图为CPU Flame Chart选取耗时较长的Build方法研究查看耗时较长的Build CallTree,根据Total Tim... 阅读全文
posted @ 2020-10-09 22:05 阿甘左 阅读(436) 评论(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 阿甘左 阅读(3681) 评论(0) 推荐(0) 编辑
摘要: 启动时通过Flutter framework层的ui.window获取到当前系统的local,根据MaterialApp用户配置的locale进行mapping,初始化Localizations,并加载LocalizationDelegate的load方法(需要在此方法中读取本地对应的locale的翻译),然后将LocalizationDelegate所代理的具体的Localizations和内置... 阅读全文
posted @ 2020-10-09 21:51 阿甘左 阅读(1363) 评论(0) 推荐(0) 编辑
摘要: 它是一个StatefulWidget, 初始化传入一个Listenable通过Listenable内部绑定了setState方法去触发子类的 build方法.子类通过继承AnimatedWidget,通过传入的Animation就能触发build方法以AnimateBuilder为例:_AnimatedState.... @overridevoid initState() {super.init... 阅读全文
posted @ 2020-10-09 21:27 阿甘左 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 内容来源于: objc4-750—> objct-weak.h/mm此类主要是实现管理对象的弱引用关系, 内部是通过一个hash tab来管理所有object的weak引用, 当该object引用技术为0被销毁时, 对象也会随之从引用表中删除. 通过弱引用机制, 可以避开对象的引用计数无法清0, 的循环引用(比较常见的例子是delegate之间的互相依赖)导致内存泄漏。## object-weak... 阅读全文
posted @ 2020-10-09 12:27 阿甘左 阅读(175) 评论(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 阿甘左 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 图文混排, 文本点击事件, 文本动画(不在讨论之内,可以通过对view来处理),如果是简单的操作,可以用UITextView来处理,当需要特殊的定制化的时候可以采用CoreText,它是一个强大的文本处理框架,支持所有文本排列相关的定制化操作,配合CoreGraphics可以实现图文混排功能。实现原理CoreText是一个底层的文本绘制框架,它真正绘制的其实只是文本部分,如果涉及到图片还是需要手动... 阅读全文
posted @ 2020-10-09 12:17 阿甘左 阅读(404) 评论(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 阿甘左 阅读(467) 评论(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 阿甘左 阅读(545) 评论(0) 推荐(0) 编辑
摘要: Flutter局部状态管理是通过注册Element依赖实现, 为此构造了InheritedWidget和InheritedModel来实现数据状态管理。InheritedWidget中内部包括了一个泛型的data类型, 用于接受数据, 它本身是一个StatefulWidget, 用于包装child并为child提供数据, 这样以 InheritedWidget 下所有的子节点就能访问它的 data... 阅读全文
posted @ 2020-10-09 11:54 阿甘左 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 它是一种字体图标, 可以将svg的图像保存以字体的形式保存到ttf中,ttf文件根据对应的unicode和图片资源关联, 通过csv文件维护一份 图片名字和unicode的mapping表和一个ttf格式的字体图标文件, 可以非常方便管理资源, 也不容易出现重复的内容, 一份文件可以支持多个平台使用TTFTrueTypeFont)是Apple公司和Microsoft公司共同推出的字体文件格式.代码... 阅读全文
posted @ 2020-10-09 11:46 阿甘左 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 这个文件定义了Flutter很多的基础动画,主要是基于Container的各个属性的动画封装,它的实现原理根据定义的时间曲线获取对应的补间值, 然后不断的更新widget的配置信息(如果有变动), 在vsync扫描时就会不断的更新每一帧的界面连在一起看就成了动画效果, 实现它需要有时间函数曲线, 补间值, vsync同步信号1.视图更新的同步信号(Vsync)Vsync信息由flutter eng... 阅读全文
posted @ 2020-10-09 11:42 阿甘左 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 它是一个独立的dart执行上下文,有自己独立的空间,不能被其他的isolate直接访问,只能访问内部的资源, 其它isolate如果需要访问,只能通过对应的端口访问 当通过spawning方法生成一个新的isolate,调用spawning方法的isolate将会获得一个新的isolate如果创建成 阅读全文
posted @ 2020-10-09 11:18 阿甘左 阅读(262) 评论(0) 推荐(0) 编辑
摘要: Flutter中的异常虽然不像Native那样会直接导致app crash,但也是不容忽视的. 比如widget构建过程因为抛出异常会导致界面灰屏,又或是某个网络请求解析失败,所以针对flutter我们也需要有一套规则来捕捉异常.Flutter中常见的异常Flutter中最最常见的一行就是空指针异常了,关于可选类型这块始终是Flutter这门语言的痛点之一,总之Flutter在数据结构转换这块和可... 阅读全文
posted @ 2020-10-09 11:10 阿甘左 阅读(447) 评论(0) 推荐(0) 编辑
摘要: Future主要用于处理flutter中的异步输入事件, 通过指定不同的初始化构造函数将异步任务转化为同步执行, 提交到当前Isolate的microTask队列或eventTask队列此外还提供了遍历的方法对future进行管理, 错捕捉和拦截,future遍历, 合并, 同时还可以转换为更为灵活的Stream处理。在实际使用中应特殊注意异常的捕捉。它和Timer,Zone, Isolate密切... 阅读全文
posted @ 2020-10-09 11:08 阿甘左 阅读(541) 评论(0) 推荐(0) 编辑
摘要: 数据结构(二) 阅读全文
posted @ 2020-10-09 01:21 阿甘左 阅读(132) 评论(0) 推荐(0) 编辑
摘要: Implicitly: 隐式动画, 根据文件里的描述它主要是用来修改widget在某个是个的属性, 通俗一点讲也能算作是属性动画就是在动画事件内, 根据定义的时间曲线获取对应的补间值, 然后不断的更新widget的配置信息(如果有变动), 在vsync扫描时就会不断的更新每一帧的界面连在一起看就成了动画效果, 实现它需要有时间函数曲线. 补间值, vsync1. VsyncVsync信息由flut... 阅读全文
posted @ 2020-10-09 01:18 阿甘左 阅读(544) 评论(0) 推荐(0) 编辑
摘要: Navigator简介 导航,负责管理页面之间的切换,通过内置的栈来保存各个页面的信息,App启动时,MaterialApp会自动创建一个Navigator,它的根视图就是我们配置的MaterialApp对应的Home页面。 Navigator主要功能介绍 Navigator流程简介 多个Navig 阅读全文
posted @ 2020-10-09 01:18 阿甘左 阅读(238) 评论(0) 推荐(0) 编辑