首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么 build 方法放在 State 中而不是在 StatefulWidget 中

老孟导读:此篇文章是生命周期相关文章的番外篇,在查看源码的过程中发现了这一有趣的问题,欢迎大家一起探讨。...为什么 build 方法放在 State 中而不是在 StatefulWidget 中呢?其中前2点是源代码的注释中给出的原因,最后一点是我的一点个人理解。...试想一下,如果 build 方法放在 StatefulWidget 中,则 AnimatedWidget 中的 build 方法需要带一个 State 参数,如下: abstract class AnimatedWidget...闭包 this 指向异常 假设 build 方法在 StatefulWidget 中,StatefulWidget 的子类写法如下: class MyWidget extends StatefulWidget...如果 build 方法在 State 中,代码如下: class MyWidget extends StatefulWidget { final Color color; const MyWidget

91320
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    为什么在静态方法中不能使用this

    看到这个标题的读者,在你们的心里多多少少都有自己的答案,下面说一下我的答案....在JVM的运行时数据区中有个虚拟机栈(或Java栈),在它的里面是由栈帧'叠加'而成.栈帧由局部变量表,操作数栈,动态连接,方法返回地址等组成. 那么我们就从局部变量表角度解答下这个问题....下面是测试代码,一个静态方法query,一个普通方法shadow,这两个方法的参数和函数体完全一样. // 静态方法 public static void query(String year) {...query方法的局部变量表,如下 shadow方法的局部变量表,如下 我们发现,非静态方法shadow的局部变量表中有this,而在静态方法query的局部变量表中没有this....因此也就解答了文章开头提出的问题. 在普通方法中,在它的局部变量表中的第一个槽存放了this, 而静态方法的局部变量表中没有存放this.

    1.9K30

    MongoDB 数组在mongodb 中存在的意义

    在MOGNODB 的文档设计和存储中,存在两个部分 1 嵌套 2 数组,所以如果想设计好一个MONGODB 在理解业务,读写比例,查询方式后,就需要介入到更深层次的理解嵌套的查询方式,嵌套多层后的性能问题...MONGODB 中的数组是属于同类型数据的元素集合,每个数组中的元素代表这个数组中同样属性的不同值,其实我们可以理解为,在一个JSON 中,有行和行列集合的存在,本身JSON可以通过数组的方式,在一个平面里面表达一个列的集合...我们对数组建立索引,db.databases.createIndex({score:1}) 现在我们要找出每个数据库中打分高于90的数据 db.databases.find({score:{$gt:90...数组在一部分应用设计中适合进行数据查询,而另外一点就是数组的缺点,就是对数组中的数据进行更新,尤其是高频次,大量的数据更新和数据的添加。 下面就是针对ORACLE 添加在数组中添加一个数据元素。...数组在MONGODB 中存在的意义很大,在很多设计中都可以通过数组的使用降低查询的复杂度和降低建立索引的SIZE。

    4.2K20

    mysql中FIND_IN_SET的使用方法

    在mysql中,有时我们在做数据库查询时,需要得到某字段中包含某个值的记录,但是它也不是用like能解决的,使用like可能查到我们不想要的记录,它比like更精准,这时候mysql的FIND_IN_SET...FIND_IN_SET(str,strlist)函数 str 要查询的字符串 strlist 字段名 参数以”,”分隔 如 (1,2,6,8) 查询字段(strlist)中包含(str)的结果,返回结果为...下面查询btype字段中包含”15″这个参数的值 SELECT * from test where FIND_IN_SET('15',btype) 返回值 下面查询btype字段中包含”5″这个参数的值...接下面查询btype字段中包含”20″这个参数的值 SELECT * from test where FIND_IN_SET('20',btype) 当然它的返回值为null,因为字段中没有这个值 FIND_IN_SET...和like的区别 like是广泛的模糊匹配,字符串中没有分隔符,Find_IN_SET 是精确匹配,字段值以英文”,”分隔,Find_IN_SET查询的结果要小于like查询的结果。

    25010

    python中list的各种方法使用

    参考链接: Python中list的方法 2| del, remove(), sort(), insert(), pop(), extend()… list是python中最常用的数据结构  name_list...2.修改 name_list[0] = "xiaoming" # 3.增删 # append方法在list末尾追加数据 name_list.append("xiaoyang") # insert 方法在指定索引处插入数据...4.删除 # remove删除指定元素的第一个(可能有重复值) name_list.remove("xiaohua") # pop删除list中的最后一个数据 name_list.pop() name_list.pop...(1)  # 删除指定索引位置的数据 del name_list[1]  # 删除指定索引位置的数据 # clear name_list.clear()  # 删除所有数据 # 5.查看元素总个数和出现次数...# 查看list中有几个元素 list_len = len(name_list) # 统计一个元素在list中出现了几次 count = name_list.count("zhangsan") # 6

    59150

    在Java中为什么不同的返回类型不算方法重载?

    本文已收录《Java常见面试题》:https://gitee.com/mydb/interview 方法重载是指在同一个类中,定义了多个同名方法,但每个方法的参数类型或者是参数个数不同就是方法重载...doSomething } public void method(Integer id, String name) { // doSomething } } 为什么不同返回类型不算方法重载...: 那为什么返回类型不能做为方法签名的一部分呢?...匹配原则5:可变参数匹配 最后将代码中的方法删除的只剩一个可选参数,实现代码如下: public class OverloadExample { public static void main(...总结 在同一个类中定义了多个同名方法,但每个方法的参数类型或者是参数个数不同就是方法重载。方法重载的典型使用场景是 String 中的 valueOf 方法,它有 9 种实现。

    3.4K10

    坏消息,new Date()方法在IOS系统中存在null值情况

    背景介绍 笔者最近在开发小程序,发现在使用new Date()函数在电脑模拟器上倒是没什么影响能很好实现效果,但是在我的Iphone上看到的效果跟预想有出入。...图为在电脑微信小程序模拟器的效果图,可以看到感觉良好。 图为在世界最好用的手机产品Iphone上的效果,可以看到和模拟器有出入,这个日期生成有问题。...图为笔者使用VConsole打出来的结果,可以看到为null,这个new Date()失败!!! 公布答案 既然事情已经发生,那我们就简单地分析下为什么?...日期科普 形如"YYYY-MM-dd"可以表示日期格式,形如"YYYY/MM/dd"也可以表示日期格式,像这种表示有很多种,你需要知道的一点是,它只是表现日期形式的一种,它并不是日期本身,像从1970年到现在的时间戳也可以表示日期...,这些都是日期的表现形式。

    55620

    坏消息,new Date()方法在IOS系统中存在null值情况

    背景介绍笔者最近在开发小程序,发现在使用new Date()函数在电脑模拟器上倒是没什么影响能很好实现效果,但是在我的Iphone上看到的效果跟预想有出入。...图为在电脑微信小程序模拟器的效果图,可以看到感觉良好。图片图为在世界最好用的手机产品Iphone上的效果,可以看到和模拟器有出入,这个日期生成有问题。...图片图为笔者使用VConsole打出来的结果,可以看到为null,这个new Date()失败!!!图片公布答案既然事情已经发生,那我们就简单地分析下为什么?...日期科普形如"YYYY-MM-dd"可以表示日期格式,形如"YYYY/MM/dd"也可以表示日期格式,像这种表示有很多种,你需要知道的一点是,它只是表现日期形式的一种,它并不是日期本身,像从1970年到现在的时间戳也可以表示日期...,这些都是日期的表现形式。

    99230

    当返回前端的数据中存在List对象集合,如何优雅操作?

    1.业务背景 业务场景中,一个会话中存在多个场景,即一个session_id对应多个scene_id和scene_name 如果你写成如下的聚合模型类 public class SceneVO { private...String sessionId; private String sceneId; private String sceneName; // 省略对应的getter和setter方法 } 返回的...List形式如下,这个数据在data属性中 { "data":[ { "sessionId": "jksadhjksd", "sceneId":"NDJWKSDSJKDKED...-- collection 标签:用于定义关联的list集合类型的封装规则 property:对应父类中list属性名,这里SceneVO类里的List变量名为sceneList...集合类型的封装规则 property属性:对应父类中List集合的变量名,这里SceneVO类里的List变量名为sceneList ofType属性:集合存放的类型,List集合要装的类的类名,这里是

    1.3K10
    领券