![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
kmm
文章平均质量分 85
李小白lt
kotlin yyds
展开
-
Compose State的各种转换
很简单,就一个方法但是也得注意,上面的方法是针对泛型的,如果只是基本数据类型,推荐使用相应的方法,在JVM上可以减少拆装箱带来的消耗1.使用 MutableState 的对象,通过控制 MutableState 对象的 value 属性来获取和设置值2.使用 MutableState 的解构声明,获取 value 和 setValue(高阶函数) 来使用可以看到其声明,value 和 setValue 就对应 component1 和 component2 方法3.使用属性代理。原创 2023-12-26 18:39:47 · 179 阅读 · 0 评论 -
Kotlin空安全类型之平台类型
众所周知,Kotlin的空安全很方便,能避免绝大部分的空安全问题一般类型分为:可空类型如 String?不可空类型 String其中可空类型的String?可以赋值null或String类型的值,在使用时必须显式的进行空处理而不可空类型的String,只能赋值String类型,无法向其赋值null,使用时无需空处理,也不会遇见空指针异常但为什么我上面说能避免绝大部分的空安全问题呢?是因为Kotlin为了兼容其他语言,还有对应语言平台的平台类型 String!原创 2023-07-25 21:38:16 · 307 阅读 · 0 评论 -
Kotlin跨平台的网络请求框架-跨平台的Retrofit
一般安卓开发中网络请求框架都是使用OkHttp+Retrofit,但其只能应用于jvm平台上而Kotlin可用于jvm,js,native因此一个Kotlin跨平台的网络请求框架必不可少而ktor-client是Kotlin官方提供的网络请求框架,可以跨平台的进行网络请求与之对应的还有ktor-server可以用来写服务器端(但这不是这篇文章的重点)但ktor-client使用起来还是稍微有些麻烦,所以我们可以模仿Retrofit开发一个更方便使用的跨平台网络请求框架。原创 2023-05-31 21:45:00 · 1200 阅读 · 0 评论 -
解决Kotlin/Native报错:There is still an unbound symbol after generation of IR module <xxx>:
报错信息There is still an unbound symbol after generation of IR module :Unbound public symbol IrSimpleFunctionPublicSymbolImpl: xxx原创 2023-03-31 23:49:22 · 188 阅读 · 0 评论 -
使用MavenCentral发布Kotlin多平台库的远程依赖(KMM,KMP)
开发者可能都会做自己的开源库,像我以前只做一些单平台的,如Android或JVM平台,这时候直接使用jitpack即可,很简单就能发布远程依赖而现在Kotlin可以通过expect来实现原生多平台项目(或库),这时我们开发出来一个多平台的库,可以使用MavenCentral来发布原创 2023-02-25 23:24:10 · 648 阅读 · 0 评论 -
Compose之跨平台Activity页面
我们可以使用Kotlin expect来关联Android的Activity和Desktop的Compose fun(或Window),写一个统一的类BaseComposeActivity这样BaseComposeActivity在Android中就映射为一个真正的Activity,而在Desktop中映射为一个Compose fun,方便我们进行页面导航原创 2023-01-31 14:28:23 · 1380 阅读 · 0 评论 -
解决<get-metadataDependencyResolutions>(...) must not be null的问题
直接搜(...) must not be null在各种搜索引擎上都无法搜索到具体内容,后来搜了下transformCommonMainDependenc这个task[org.gradle.internal.buildevents.BuildExceptionReporter] Execution failed for task ':beans:transformCommonMainDependenc原创 2022-11-21 15:01:56 · 1270 阅读 · 0 评论 -
使用KSP处理注解和生成Kotlin代码
ksp是Kotlin 符号处理工具,类似于kapt(apt),可用于开发轻量级编译器插件.也可以理解为注解处理和编译时代码生成工具(也能处理所有文件,不止被注解标记的)既然有了kapt(apt),为什么还要有ksp?速度比kapt更快,性能更好对kotlin的支持更好适用于Kotlin Multiplatform可以直接生成kotlin代码文件(实际上可以生成任意类型的文件)原创 2022-10-24 09:03:37 · 3565 阅读 · 3 评论 -
Compose中更灵活易用的TextField以及密码输入框
JetpackCompose中的TextField简单用起来很方便,但如果要自定义ui就不好实现了,我们看一下效果TextField类似的还有OutlinedTextField他们都有共同的api和特点,简单使用很方便,但是其有很大的内边距不好调整,且其背景ui也不太好调整(背景可以改成透明,但间距我查看源码也没改成...)幸亏Compose中预留了基础的输入框实现没有边距,没有背景,很适合我们自定义ui,所以我就根据BasicTextField封装了一下,使ui更简单易用。...原创 2022-07-18 19:15:16 · 3675 阅读 · 2 评论 -
Compose-jb图片加载库load-the-image,适用于KMM Compose desktop桌面端(Windows,Linux,MacOs)
Android平台上有很多优秀的图片加载框架,比如Glide,Picasso,Fresco而Compose-jetpack上的图片加载框架有Coil但Compose-jb上却暂时没有图片加载框架,正好我有用Compose-jb写一些小工具,有图片加载的需求,于是就仿照Android平台的图片加载库写了一个具有简单功能的图片加载库项目已开源,地址: load-the-image (github.com) 欢迎star功能1.简单的支持多个桌面平台的图片加载(部分格式异步加载)2.支持多种格式:网络链接,本地文原创 2022-06-10 17:21:23 · 1824 阅读 · 4 评论 -
KMM Kotlin expect的几种声明方式
前言Kotlin的expect关键字一般用在多平台上,比如在多平台项目中的common中声明方法签名,然后由不同的平台去实现该方法,从而实现一个多平台(跨平台)方法.创建KMM项目可以参考:KMM(二)+Compose(二) 开发一个Kotlin多平台应用_滔lt的博客-CSDN博客正文接下来就说一下Kotlin expect的几种声明方式1.顶层函数和顶层扩展函数在commonMain文件夹中声明:在androidMain(和其他平台)文件夹中实现:声明并实现后,.原创 2022-03-17 23:37:40 · 3699 阅读 · 2 评论 -
KMM+Compose 开发一个Kotlin多平台应用
前言现在跨平台开发框架有很多,比如H5类型,RN,Flutter等,而Kotlin多平台+Compose跨平台ui可能也是未来一种好用的开发框架ps:后文KMM都是指Kotlin多平台框架,而不是单指Kotlin Multiplatform Mobile虽然目前KMM还有些不太成熟,Compose跨平台的支持平台不太全,单也不妨碍现在来尝尝鲜.ps:Compose-android正式,Compose-desktop正式,Compose-web未正式,Compose-ios期待中...项目原创 2022-03-15 21:45:00 · 7123 阅读 · 0 评论 -
Compose 手势事件:防止重复点击,双击,长按,全局触摸隐藏键盘
前言JetPack Compose (后续简称compose) release版已经出来了三四个月了,虽然没正式版之前也学过几次,但一直没有机会用,在加上api的变更,导致之前学的都忘完了,现在终于有机会写一点(将原有项目的简单页面用compose重写),发现了一些compose的优势和劣势:优势:1.超容易封装和组合,相对于原生自定义组合view,compose组合一个view简直不要太简单,只需要一个方法就能搞定,封装也更简便好用(组合vs继承)2.跨平台,目前kotlin的跨平台,co原创 2021-11-17 17:52:25 · 5059 阅读 · 2 评论 -
KMM 搭建环境,并运行安卓和ios
前言kmm是Kotlin Multiplatform Mobile(kt移动跨平台)的缩写,虽然目前还不是正式版本,但也是可以用了kmm的跨平台实现方式是将代码分成三块:安卓原生代码ios原生代码kotlin共享代码,其中在安卓部分会将kotlin共享代码编译为jvm文件并当做lib加入到安卓原生代码中,而ios则是将kotlin共享代码编译成native(oc?)代码,然后当做framework引入(图引自kt官网)这样既可以跨平台,又保证了平台灵活性,并且性能相对于flu原创 2021-11-07 01:37:48 · 5852 阅读 · 0 评论