Net支持发起请求开始时显示加载框, 请求结束时隐藏加载框(无论成败)
scopeDialog {
tv.text = Post<String>(Api.PATH) {
param("username", "用户名") // 请求参数
param("pwd", "123456")
}.await()
}
默认是原生加载框(MaterialDesign Dialog), 可自定义
指定当前请求加载框
val dialog = BubbleDialog(requireActivity(), "加载中")
scopeDialog(dialog) {
tv.text = Post<String>(Api.PATH) {
param("username", "用户名")
param("pwd", "123456")
}.await()
}
!!! quote "菊花加载对话框"
示例使用的iOS风格对话框: [BubbleDialog](https://liangjingkanji.github.io/Tooltip/bubble.html)
初始化时指定加载对话框构造器NetDialogFactory
NetConfig.initialize(Api.HOST, this) {
setDialogFactory {
ProgressDialog(it).apply {
setMessage("我是全局自定义的加载对话框...")
}
}
}
如仅修改加载对话框文本, 在项目values
目录的strings.xml添加以下
<!--对话框-->
<string name="net_dialog_msg">加载中</string>
!!! question "自定义的加载框不是Dialog"
由于`scopeDialog`只能指定Dialog类型, 因此只能手动实现`Dialog`接口
仅要求复写 [DialogCoroutineScope](https://github.com/liangjingkanji/Net/blob/2abf07e1d003ef44574278fd2010f3375225d964/net/src/main/java/com/drake/net/scope/DialogCoroutineScope.kt#L47) 内调用的`Dialog`方法
使用scopeDialog
发起请求后, 分为三个生命周期
加载框状态 | 作用域 |
---|---|
显示 | 执行scopeDialog 时显示加载框 |
隐藏 | 作用域内任务结束时隐藏加载框 |
手动取消 | 取消作用域内所有网络请求 |