博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2020年11月23日

摘要: 热重载 热重载是指,在不中断 App 正常运行的情况下,动态注入修改后的代码片段。而这一切的背后,离不开 Flutter 所提供的运行时编译能力。为了更好地理解 Flutter 的热重载实现原理,我们先简单回顾一下 Flutter 编译模式背后的技术吧。 JIT(Just In Time),指的是即 阅读全文

posted @ 2020-11-23 23:59 肖无情 阅读(245) 评论(0) 推荐(0) 编辑

摘要: Future 和 Stream 类是 Dart 异步编程的核心。 Future 表示一个不会立即完成的计算过程。与普通函数直接返回结果不同的是异步函数返回一个将会包含结果的 Future。该 Future 会在结果准备好时通知调用者。 Stream 是一系列异步事件的序列。其类似于一个异步的 Ite 阅读全文

posted @ 2020-11-23 23:56 肖无情 阅读(127) 评论(0) 推荐(0) 编辑

摘要: Expanded( child: Container( margin: EdgeInsets.fromLTRB(10, 5, 10, 5), padding: EdgeInsets.only(left: 5), decoration: BoxDecoration( color: Colors.whi 阅读全文

posted @ 2020-11-23 23:54 肖无情 阅读(342) 评论(0) 推荐(0) 编辑

摘要: TabBarView、PageView 估计是出于节约内存的原因吧。 发现这个问题的时候,搜索了一下全网。大致就两种解决方案,1是修改源码,2是是实现 AutomaticKeepAliveClientMixin 这个mixin就ok了。 官方推荐第二种方法,TabBarView、PageView会添 阅读全文

posted @ 2020-11-23 23:42 肖无情 阅读(129) 评论(0) 推荐(0) 编辑

摘要: InheritedWidget提供了一种数据在widget树中从上到下传递、共享的方式 , 简而言之 InheritedWidget 中暴露出来的数据能有效地向下(子widget)传播(和共享)信息 如Flutter SDK中正是通过InheritedWidget来共享应用主题(Theme)和Loc 阅读全文

posted @ 2020-11-23 23:41 肖无情 阅读(130) 评论(0) 推荐(0) 编辑

摘要: 1、 abstract class CLoginPrenter{ void loginWithShopCode(String shopCode); } abstract class CLoginView { void loginSuccess(); } abstract class CLoginMo 阅读全文

posted @ 2020-11-23 23:39 肖无情 阅读(81) 评论(0) 推荐(0) 编辑

摘要: mixins的中文意思是混入,就是在类中混入其他功能。 Mixins是一种在多个类层次结构中复用类代码的方法 可以看出Mixins最重要的功能是复用代码,我们先看下JAVA,复用代码的方式有哪些: 继承 子类可以复用父类的方法和属性,但是JAVA里的继承只能单继承。 组合 将要复用的代码,封装成类A 阅读全文

posted @ 2020-11-23 23:37 肖无情 阅读(101) 评论(0) 推荐(0) 编辑

摘要: 在 pubspec.yaml 中添加依赖 //pub方式 dependencies: flutter_easyrefresh: ^2.1.1 //导入方式 dependencies: flutter_easyrefresh: path: 项目路径 //git方式 dependencies: flut 阅读全文

posted @ 2020-11-23 23:35 肖无情 阅读(580) 评论(0) 推荐(0) 编辑

摘要: class StateManagerByProviderModel with ChangeNotifier{ int count = 0; void increment(){ count ++; notifyListeners(); } } var pmodel = StateManagerByPr 阅读全文

posted @ 2020-11-23 23:34 肖无情 阅读(184) 评论(0) 推荐(0) 编辑

摘要: 总结: 记住构造函数是不能被继承的,这将意味着子类不能继承父类的命名式构造函数,如果你想在子类中提供一个与父类命名构造函数名字一样的命名构造函数,则需要在子类中显式地声明 如果类A 没有显示声明构造函数,那么它将有一个默认的构造函数,这个构造函数 没有参数 如果这个类有父类, a: 父类没有显示声明 阅读全文

posted @ 2020-11-23 23:30 肖无情 阅读(1498) 评论(0) 推荐(0) 编辑

摘要: 1、耗时操作(IO)处理 在开发中针对如何处理耗时的操作,不同的语言有不同的处理方式 处理方式一: 多线程,比如Java、C++,我们普遍的做法是开启一个新的线程(Thread),在新的线程中完成这些异步的操作,再通过线程间通信的方式,将拿到的数据传递给主线程。 处理方式二: 单线程+事件循环,比如 阅读全文

posted @ 2020-11-23 23:22 肖无情 阅读(166) 评论(0) 推荐(0) 编辑

摘要: 1、类 Getters 和 setters 方法 每个实例变量都有一个隐式的getter class Rectangle { num left, top, width, height; Rectangle(num left,num top,num width,num height){ this.le 阅读全文

posted @ 2020-11-23 23:18 肖无情 阅读(51) 评论(0) 推荐(0) 编辑

摘要: 1、论数字、函数和null都是对象 在变量中可以放置的所有东西都是对象,而每个对象都是类的实例。无论数字、函数和null都是对象。所有对象都继承自[Object]类。 // abstract class int extends num int variable = 3 ; variable.toSt 阅读全文

posted @ 2020-11-23 23:16 肖无情 阅读(170) 评论(0) 推荐(0) 编辑

摘要: 内存对齐规则 1:数据成员对⻬规则:结构(struct)(或联合(union))的数据成员,第 一个数据成员放在offset为0的地方(即首地址的位置),以后每个数据成员存储的起始位置要 从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组, 结构体等)的整数倍开始(比如int为4字节 阅读全文

posted @ 2020-11-23 22:47 肖无情 阅读(248) 评论(0) 推荐(0) 编辑

摘要: 1、kvo的本质 1.1、引入 1.2、isa的指向 1.3、方法的调用流程 那么setAge 和NSSetXXXValueAndNotify怎么关联的呢? 1.4、面试回答: 2、如何手动触发KVO 3、直接修改成员变量会触发kvo吗? 4、通过kvc修改属性值(或者成员变量,没有setter)会触发kvo吗? 5、通过kvc获取值的过程,原理是什么? 阅读全文

posted @ 2020-11-23 22:31 肖无情 阅读(69) 评论(0) 推荐(0) 编辑

摘要: ##1、Category 1.1、原理 #import "FQPeople+Test.h" @implementation FQPeople (Test) + (void)test{ } - (void)test1{ } @end 分类的对象方法test1存放在类对象FQPeople中 分类的类方法 阅读全文

posted @ 2020-11-23 22:03 肖无情 阅读(438) 评论(0) 推荐(0) 编辑

摘要: 1、分类中添加关联属性 类中声明属性 @property(nonatomic,assign) int age; 相当于 @interface People : NSObject { int _age; } - (void)setAge:(int)age; - (int)age; @end - (vo 阅读全文

posted @ 2020-11-23 21:55 肖无情 阅读(118) 评论(0) 推荐(0) 编辑