jinhan13789991
2020-04-22 10:13:54 +08:00
已经在用了
```kotlin
override fun onClickInsertImage() {
MediaSelectService().openGallery(context, MediaType.图片, 9)
.flatMapConcat { it.asFlow() }
.flatMapConcat {
FileUploadService()
.uploadFile(UriUtils.uri2File(it).absolutePath, type)
.onStart { showLoadingListener.invoke(true) }//上传第一张就显示 dialog
}
.onCompletion { showLoadingListener.invoke(false) }//上传结束隐藏 dialog
.onEach { insertImage(it) }//插入图片
.launchInAndHandleError(scope)
}
```
MediaSelectService()是对 PermissionsUtils 和 RxImagePicker 的封装,会申请对应的权限,然后打开页面返回图片地址列表。
FileUploadService() 是对云存储的封装,会调用接口,拿到上传 token,再调用腾讯云的上传 sdk,最后拿到上传后的图片连接。
最后是把图片插入到富文本里。
launchInAndHandleError() 是对 kotlin 协程流的扩展方法,主要是全局统一处理错误异常。
我只能说,太 TMD 好用了。