自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

BATTERIA

Life is Like Gentle Water.

  • 博客(16)
  • 收藏
  • 关注

原创 Flutter build-runner工具简单使用

build_runner提供了一些用于生成文件的通用命令,这些命令中有的可以用于测试生成的文件,有的可以用于对外提供这些生成的文件以及它们的源代码。如果你开发的是 Web :你可以使用webdev 工具替代 build_runner 以构建和提供 Web 应用。build SummaryGet Startpubspec.yaml添加依赖dependencies: flutter: sdk: flutter build_runner: anybuild.ya...

2020-09-21 12:31:43 5303

原创 Ansible自动化配置Flutter环境

安装:python>2.6brew install ansiblebrew install http://git.io/sshpass.rbansible --versionhostsall: children: servers: hosts: 10.23.2.147: ansible_ssh_user: xxxx ansible_ssh_pass: "xxxx123" .

2020-09-21 12:22:03 121

原创 MacDown+Mathpix Markdown高效编辑数学公式 支持LaTex语法

官网安装相关软件MacDown-高效编辑Markdown支持pdf输出https://macdown.uranusjr.com/Mathpix-截图扫描数学公式、支持LaTex排版语法https://mathpix.com/Mathpix使用截图设置MacDown支持Tex数学语法MacDown编辑数学公式使用范例...

2020-09-21 12:17:29 383

原创 Flutter-Dart var、dynamic、object区别

var、dynamic、object区别var在第一次赋值时确定类型,编译时就会转型object是所有类型的父类,可以随便指定引用dynamic是运行时才会确定类型,所以编译时无法发现错误;也因此方便实现动态代理...

2020-09-21 12:13:00 695

原创 Flutter-stream流 响应式编程简单应用

Stream流是Flutter对响应式编程的一种实现。创建StreamController(Stream的控制器)/// 使用broadcast构造产生的Stream可以被多次监听final streamController = StreamController.broadcast();// final streamController = StreamController();streamController.cancel();使用StreamController创建Streamfin

2020-09-21 12:12:09 363

原创 Dart-线程模型、isolate开启多线程方法

线程模型Dart 在单线程中是以消息循环机制来运行的,其中包含两个任务队列,一个是“微任务队列” microtask queue,另一个叫做“事件队列” event queue。从图中可以发现,微任务队列的执行优先级高于事件队列。现在我们来介绍一下Dart线程运行过程,如上图中所示,入口函数 main() 执行完后,消息循环机制便启动了。首先会按照先进先出的顺序逐个执行微任务队列中的任务,事件任务执行完毕后程序便会退出,但是,在事件任务执行的过程中也可以插入新的微任务和事件任务,在这种情况下,整个线

2020-09-21 11:58:16 1629 1

原创 Flutter-中文无法使用TextAlign.center居中

中文无法使用TextAlign.center居中目前解决方案 使用Baseline微调问题 在不一样的设备上效果有差异,Baseline不是很确定issues表意字符无法居中现已修复,使用新版本flutter不再出现该问题More info: CSDN...

2020-09-18 11:28:20 1626

原创 算法-字符串相关算法合集

字符串相加fun addStrings(num1: String, num2: String): String { val l1 = num1.length val l2 = num2.length var i = l1 - 1 var j = l2 - 1 var signal = 0 var result = "" while (i >= 0 || j >= 0 || signal == 1) { val n1 .

2020-09-18 11:27:14 215

原创 Flutter-布局的树结构分析

Flutter布局的树结构flutter中有三棵树,分别是Widget树、Element树、RenderObject树。其中Widget中只存放基本的配置信息,可以当作就是一个数据结构,而RenderObject是实际渲染使用的,layout和paint等操作都是RenderObject完成的。Element则是存放上下文的,同时持有Widget和RenderObject,并且负责处理state的状态变化。State的生命周期[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(

2020-09-18 11:25:51 1399

原创 算法-链表问题记录

链表相加 class ListNode(var `val`: Int) { var next: ListNode? = null } fun addTwoNumbers(l1: ListNode?, l2: ListNode?): ListNode? { var list1 = l1 var list2 = l2 val result = list1 var signal = 0 .

2020-09-18 11:24:46 94

原创 Flutter-性能优化方法与工具

性能优化分析与优化打开帧率检测[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TDGJHUWE-1600399314679)(/images/performance.jpg)]分析GPU、UI线程爆红的原因UI报红:执行了耗时的工作、算法复杂度过高GPU报红:绘制的图形过于复杂、执行了过多的GPU操作优化方法调整耗时代码的调用时机不要全局刷新使用独立的isolate处理过于耗时的算法多级缓存策略内存优化策略优化图片质量和尺寸在调用频率很高的方法中创

2020-09-18 11:22:31 414

原创 Dart-对比Java理解Dart虚拟机内存结构

Dart内存GC方法GC对比Java GCDart和Java的垃圾回收机制一样,都是分成了新生代和老生代,新创建的对象都会先分配在新生代中。然而Dart和Java的新生代内存分配方式不一样,Dart只分了from和to 1:1的两部分,而Java则是分成了Eden、FromSpace、ToSpace 8:1:1三部分。Dart中当from和to其中的一个内存占满则会通过gc将幸存的对象转移到另一个区域内,并将前一个区域清空,当经历了一定次数的gc仍然存活的,会被分配到老生代中。 老年代采用标记整

2020-09-18 11:21:23 999

原创 Flutter-深入理解flutter手势分发过程与相关Api

PointerPointer Event指针事件是指最原始的触摸事件,一次事件包括触摸到屏幕、在屏幕上移动到离开屏幕。使用Listener组件来监听指针事件,基本的回调有onPointerDown、onPointerMove、onPointerUp。Listener( child: Container( alignment: Alignment.center, color: Colors.blue, width: 100, height: 100, ),

2020-09-18 11:20:13 372

原创 Flutter Web-调研与简单应用

Flutter WebFlutter 1.9 稳定版正式将独立的 Flutter for web 仓库集成到 Flutter 的主仓库中。Flutter 1.12 稳定版提供了改进的 Web 支持,但仍是beta版,不建议商用。目前Flutter Web仍面临包体积大、性能差、资源缺乏等许多问题。案例Flutter Widget LivebookPanacheRivetKENKEN 益智游戏基本实现[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-di1Xc

2020-09-18 11:18:55 653

原创 Kotlin-对范型的理解、对比Java

泛型的意义泛型(参数化类型)代码复用。多种类型执行相同代码类型安全,编译器检查类型。泛型的类型在使用时指定,不需要强转。通配符超类型下界限定符? super T 指定类型参数的下限(该类型必须是类型T或者它的父类型)= in子类型上界限定符? extends T 指定类型参数的上限(该类型必须是类型T或者它的子类型) = out无界通配符 ?在Kotlin中强调了生产消费的概念,in是消费,out是生产。// 逆变interface Consumer<in T> {

2020-09-18 11:17:28 103

原创 Kotlin-内联相关问题inline、noinline、reified、crossinline

inline意义:函数在运行时都会生成一个对象,很多的小函数意味着额外的开销,使用内联函数则会在编译时进行优化。// examplelock(l) { foo() }inline fun <T> lock(lock: Lock, body: () -> T): T {...}// generatel.lock()try { foo()}finally { l.unlock()}noinline如果希望只内联一部分传给内联函数的 lambda

2020-09-18 11:13:41 392

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除