Net支持发起请求开始时显示加载框, 请求结束时隐藏加载框(无论成败) ## 自动显示 ```kotlin hl_lines="1" scopeDialog { tv.text = Post(Api.PATH) { param("username", "用户名") // 请求参数 param("pwd", "123456") }.await() } ```
默认是原生加载框(MaterialDesign Dialog), 可自定义 ## 单例自定义 指定当前请求加载框 ```kotlin val dialog = BubbleDialog(requireActivity(), "加载中") scopeDialog(dialog) { tv.text = Post(Api.PATH) { param("username", "用户名") param("pwd", "123456") }.await() } ``` !!! quote "菊花加载对话框" 示例使用的iOS风格对话框: [BubbleDialog](https://liangjingkanji.github.io/Tooltip/bubble.html) ## 全局自定义 初始化时指定加载对话框构造器`NetDialogFactory` ```kotlin NetConfig.initialize(Api.HOST, this) { setDialogFactory { ProgressDialog(it).apply { setMessage("我是全局自定义的加载对话框...") } } } ``` 如仅修改加载对话框文本, 在项目`values`目录的strings.xml添加以下 ```xml 加载中 ``` !!! 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`时显示加载框 | | 隐藏 | 作用域内任务结束时隐藏加载框 | | 手动取消 | 取消作用域内所有网络请求 |