首页
苏兮影视
随笔记
壁纸
更多
直播
时光轴
友联
关于
统计
Search
1
v2ray节点搭建
849 阅读
2
软件添加id功能按钮
815 阅读
3
QQ扫码无法登录的解决方案
618 阅读
4
typecho非常有特色的模块
607 阅读
5
QQxml消息卡片生成源码
567 阅读
谈天说地
建站源码
经验教程
资源分享
动漫美图
登录
Search
标签搜索
java
rust
flutter
esp32c3
springboot
安卓
linux
vue
docker
joe
快捷键
git
fish shell
maven
redis
netty
dart
groovy
js
设计模式
尽意
累计撰写
109
篇文章
累计收到
39
条评论
首页
栏目
谈天说地
建站源码
经验教程
资源分享
动漫美图
页面
苏兮影视
随笔记
壁纸
直播
时光轴
友联
关于
统计
搜索到
109
篇与
的结果
groovy闭包
// 这里定义一个空的hash表,也是简写 def ext = [null:null] def ext = [:] // 如果写成def ext = [] 则为一个空的数组 // 这里定义了一个person的哈希表 def person = [name:"小明",age:18] // 可以使用键的方式接收值 println person.name println person["name"] // exc函数接收一个闭包参数 def exc(fun){ fun() } // 执行exc函数,传入一个闭包({}) exc({ println "hello" }) // 由于groovy的语法特性,函数只有一个参数时可以省略() // 最终简写为exc {} exc {println "hh"} // exc2函数接收一个闭包参数,一个普通传参 def exc2(fun,it){ fun(it) } // 执行exc2函数,传入两个参数 exc2({ println "hello $it" },4) // 定义一个函数接收一个闭包 def exc3(fun,it){ fun(it.name,it.age) } exc3({ name, age -> {println "${name}:${age}"} },[name:"tom",age:18])
2024年07月26日
116 阅读
0 评论
2 点赞
2024-05-17
记录一下flutter的值传递细节
最近在实现一个类似qq相册的功能,点击右上角图片的小圆圈框选。思路也很简单,当image控件的值发送改变时,重新rebuild渲染,当然是局部渲染,所以要封装这么一个控件,构造函数: final File file; final BottomImageChanged isChanged; final VoidCallback onPress; 图片显示使用的FileImage,传递一个回调函数,用来处理区选对应的widget,由于dart的传参对于基本变量都是值传递吗,所以也就造成了父控件值改变了,但是子组件不能监听到,所以使用类包装一下基础变量值,提供get set方法。也可以使用ValueNotifier包装基础变量,List.filled 和 List.generate 都是用于创建固定长度的列表List.filled:列表中的所有元素都是相同的对象,适用于需要多个相同对象引用的情况。List.generate:每个元素都是独立的对象,适用于需要为每个列表项创建不同对象的情况,例如为每个列表项创建独立的 ValueNotifier。
2024年05月17日
126 阅读
0 评论
0 点赞
netty自定义编解码器解决黏包半包问题
netty自定义消息体,编码跟解码是相对应的关系,比如编码使用,四个字节的魔数,一字节的版本,一字节的序列化方式,四字节的javabean对象序列化的长度,javabean序列化的内容。那么解码也是按照自定义的字节数拿到数据,前面10个字节都是固定的,只有javabean序列化的内容是不固定的。所以解码必然会有黏包半包问题,假设第一次消息有100个字节,javabean对象序列化的长度为120,那么读取数据是不全的,也就是半包。解决方案,使用netty官方的handel,new LengthFieldBasedFrameDecoder(),帧解码器。当缓存的消息主题不够时,不会将消息向下传递,等待完整的数据才向下传递交给解码器解码。
2024年05月12日
142 阅读
0 评论
1 点赞
flutter 卡在 "Running Gradle task..."
每次启用新的flutter插件都会卡一阵子,网上的说法也都是换maven下载源,即使是换了也还是会卡住。解决方案:在终端中打开flutter项目目录,cd到android目录下,使用gradlew clean清理一下,清理完成后重新build即可。
2024年05月11日
150 阅读
0 评论
1 点赞
2024-05-02
flutter实现封装控制器
在flutter中,尽管已经可以通过状态提升实现小部分的值传递,用回调函数的方法去修改父类的值,在父类调用setstate相当于重新rebuild了父类以及子组件的全部组件,而我们只需要看到子组件的内容发送改变,对此性能上无疑是浪费的。所以需要对组件进行封装,使每次更新只涉及到需要的子组件,这也是性能优化以及解耦的一种解决方案。新建一个controller类继承ChangeNotifier私有化成员变量,设置get set方法,set数据的时候调用notifyListeners函数,通知框架需要更新到新的数据通过ListenableBuilder组件监听需要更新的ChangeNotifier对象每次数据更新使调用set方法都会调用notifyListeners函数,在listenable又会监听到数据的改变,从而进行重绘。
2024年05月02日
145 阅读
0 评论
2 点赞
1
...
10
11
12
...
22