随笔分类 - Flutter
Flutter 工作,学习,问题总结
摘要:依赖于Bloc Package升级(2.0.0->6.1.0) Provider扁平化依赖通过nested实现 initialState属性删除,主要是为了兼容懒加载(巨坑,由于之前工程在初始化需要进行缓存及逻辑计算,导致初始化函数机构混乱,再加上受限于先于flutter独特的初始化方法,没办法通过
阅读全文
摘要:概览 Provider 4.3相比3.0系列版本有非常重大的改变,ValueDelegate被替代, MultiProvider的children组织方式也进行了变更,采用Nested的方式实现,另外增加了context相关的语法糖read,watch,select. SingleChildWidg
阅读全文
摘要:由于目前的项目采用bloc方式构建,对于的复杂页面的交互处理起来代码量越来越庞大,比如带抽屉效果的地图页面,涉及到20多个bloc之间的状态传值,而bloc的很多state的转换都依赖于widget构建,对于日益庞大的widget tree,嵌套式的bloc相互订阅,不管是从新功能开发和bug的修复
阅读全文
摘要:flutter 1.20.2 版本iOS WKWebView 和 UIImagePickerController 冲突临时解决方案,目前最新的版本1.22.2已经修复了,项目改动小的可以直接升级github issue地址: https://github.com/flutter/flutter/issues/65361frozen image异常情况的视图层级,对比发现开启相机后,再进入UIKit...
阅读全文
摘要:1.permission_handler,请求系统的所有权限app_settings:, 跳转到app授权界面They are caused a new issue that flutter app could not determiner the correct localization strings## 授权实现方式集中在某个页面授权共享授权信息的storage前后台切换重新获取授权(用户在...
阅读全文
摘要:它Google推出的跨平台语言,同时支持android,iOS和windows,使用skia图形渲染引擎,渲染效率可达60FPS以上。Flutter框架如下图,它主要分为以下三层Framework: 采用纯dart编写,主要负责界面构建,手势,布局,基础服务的包装和提供,围绕着Widget树,Element树,Render树的构建和管理而展开的Engine,提供了dartvm服务器,dart运行的...
阅读全文
摘要:Flutter的widget渲染正常情况下一般可以达到60fps以上,作为跨平台语言为甚么有如此优势?它基于Skia引擎直接绘制Skia经过Google团队优化后,性能明显提升,如抗锯齿能力就得到了很好的改善但这并不意味着怎么写都可以达到这个水平,实际开发时需要综合考虑各方面的因数,如业务逻辑臃肿导致WidgetTree庞大,不够合理的状态刷新导致大两部必要的Widget被重新构建,各种插件的注册...
阅读全文
摘要:英文全称(business logic),用于处理业务逻辑,其内部实现主要是对Stream的输入和输出进行了封装,它的实现原理是利用RxDart(基于Stream封装)提供的PublishSubject和BehivorSubject实现了Event和State之间的转换,以及利用Flutter提供的
阅读全文
摘要:Flutter InspectFlutter Timeline它可以用来分析UI/GPU性能,通过对标记的方法和构建,渲染过程的起始时间来统采用真机测试在profile模式下测试最贴近真实值柱子分别代表了每帧GPU和CPU的耗时,红色标示超出了基准值,渲染较为耗时.下图为CPU Flame Chart选取耗时较长的Build方法研究查看耗时较长的Build CallTree,根据Total Tim...
阅读全文
摘要:flutter/bin/cache/pkg/sky_engine/lib/_http/http.dart -> HttpClient//示例: var httpClient = new HttpClient(); httpClient.findProxy = (url) { return HttpClient.findProxyFromEnvironment(url, envi...
阅读全文
摘要:启动时通过Flutter framework层的ui.window获取到当前系统的local,根据MaterialApp用户配置的locale进行mapping,初始化Localizations,并加载LocalizationDelegate的load方法(需要在此方法中读取本地对应的locale的翻译),然后将LocalizationDelegate所代理的具体的Localizations和内置...
阅读全文
摘要:它是一个StatefulWidget, 初始化传入一个Listenable通过Listenable内部绑定了setState方法去触发子类的 build方法.子类通过继承AnimatedWidget,通过传入的Animation就能触发build方法以AnimateBuilder为例:_AnimatedState.... @overridevoid initState() {super.init...
阅读全文
摘要:首先开启启动原生的应用,然后初始化flutter engine,之后在开启4个Task Runners分别是Platform Task Runner: 跟Flutter Engine的所有交互(接口调用)必须发生在Platform Thread,对应的native的主线程UI Task Runner Thread(Dart Runner): UI Task Runner被Flutter Engin...
阅读全文
摘要:DiagnosticableTree (diagnostics.dart) Widget (framework.dart) _WidgetForTypeTests (widget_inspector.dart) PreferredSizeWidget (preferred_size.dart) AppBar (app_bar.dart) ...
阅读全文
摘要:Flutter局部状态管理是通过注册Element依赖实现, 为此构造了InheritedWidget和InheritedModel来实现数据状态管理。InheritedWidget中内部包括了一个泛型的data类型, 用于接受数据, 它本身是一个StatefulWidget, 用于包装child并为child提供数据, 这样以 InheritedWidget 下所有的子节点就能访问它的 data...
阅读全文
摘要:它是一种字体图标, 可以将svg的图像保存以字体的形式保存到ttf中,ttf文件根据对应的unicode和图片资源关联, 通过csv文件维护一份 图片名字和unicode的mapping表和一个ttf格式的字体图标文件, 可以非常方便管理资源, 也不容易出现重复的内容, 一份文件可以支持多个平台使用TTFTrueTypeFont)是Apple公司和Microsoft公司共同推出的字体文件格式.代码...
阅读全文
摘要:这个文件定义了Flutter很多的基础动画,主要是基于Container的各个属性的动画封装,它的实现原理根据定义的时间曲线获取对应的补间值, 然后不断的更新widget的配置信息(如果有变动), 在vsync扫描时就会不断的更新每一帧的界面连在一起看就成了动画效果, 实现它需要有时间函数曲线, 补间值, vsync同步信号1.视图更新的同步信号(Vsync)Vsync信息由flutter eng...
阅读全文
摘要:它是一个独立的dart执行上下文,有自己独立的空间,不能被其他的isolate直接访问,只能访问内部的资源, 其它isolate如果需要访问,只能通过对应的端口访问 当通过spawning方法生成一个新的isolate,调用spawning方法的isolate将会获得一个新的isolate如果创建成
阅读全文
摘要:Flutter中的异常虽然不像Native那样会直接导致app crash,但也是不容忽视的. 比如widget构建过程因为抛出异常会导致界面灰屏,又或是某个网络请求解析失败,所以针对flutter我们也需要有一套规则来捕捉异常.Flutter中常见的异常Flutter中最最常见的一行就是空指针异常了,关于可选类型这块始终是Flutter这门语言的痛点之一,总之Flutter在数据结构转换这块和可...
阅读全文

浙公网安备 33010602011771号