Jelajahi Sumber

+ 增加开关缓存读取成功后是否继续显示加载动画

drake 5 tahun lalu
induk
melakukan
40f0bc5c77

+ 31 - 9
README.md

@@ -296,6 +296,11 @@ internal var onError: Throwable.() -> Unit = {
 
 
 
+1. 所有网络异常都可以通过字段`request`获取请求对象, 包含请求信息.
+2. 本框架中自动打印的吐司内部是使用的[Tooltip](https://github.com/liangjingkanji/Tooltip)框架, 最好的吐司工具. 保证异步吐司和不会覆盖和长时间显示
+
+
+
 第二种复写`strings.xml`文件中的属性
 
 
@@ -381,9 +386,11 @@ fun LifecycleOwner.scopeLife(
 
 和异步作用域的区别就是会自动吐司网络请求的异常信息
 
-```
+```kotlin
 scopeNet {
-
+  post<Model>("/path"){
+    param("key", "value")
+  }
 }
 ```
 
@@ -391,9 +398,11 @@ scopeNet {
 
 跟随生命周期的网络请求
 
-```
+```kotlin
 scopeNetLife {
-	
+  post<Model>("/path"){
+    param("key", "value")
+  }
 }
 ```
 
@@ -431,10 +440,23 @@ initNet("http://localhost.com") {
 
 
 
-```
-scopeState {
+```kotlin
+state.onRefresh {
+  scope {
+    // 异步作用域
 
-}
+    val data = post<Model>("/path"){
+      param("key", "value")
+    }.await()
+
+    if(data == null){
+      showEmpty()
+    }else {
+      textView.text = data
+    }
+    
+  }
+}.showLoading()
 ```
 
 
@@ -473,11 +495,11 @@ pageRefreshLayout.onRefresh {
     val data = result.await().data
 
     if (data.isEmpty()){
-      it.showEmpty()
+      showEmpty()
       return
     }
     
-    it.addData(data){
+    addData(data){
       index < data.totalPage // 判断是否存在下一页
     }
   }

+ 7 - 1
net/src/main/java/com/drake/net/scope/NetCoroutineScope.kt

@@ -33,6 +33,7 @@ open class NetCoroutineScope() : AndroidScope() {
     protected var error = true
         get() = if (cacheSucceed) field else true
 
+    var animate: Boolean = false
 
     constructor(
         lifecycleOwner: LifecycleOwner,
@@ -90,12 +91,17 @@ open class NetCoroutineScope() : AndroidScope() {
      * 只在第一次启动作用域时回调
      * 该函数在作用域[launch]之前执行
      * 函数内部所有的异常都不会被抛出, 也不会终止作用域执行
+     *
+     * @param error 是否在缓存读取成功但网络请求错误时吐司错误信息
+     * @param animate 是否在缓存成功后依然显示加载动画
+     * @param onCache 该作用域内的所有异常都算缓存读取失败, 不会吐司和打印任何错误
      */
     fun cache(
         error: Boolean = false,
-        animate: Boolean = true,
+        animate: Boolean = false,
         onCache: suspend CoroutineScope.() -> Unit
     ): AndroidScope {
+        this.animate = animate
         this.error = error
         this.onCache = onCache
         return this

+ 2 - 1
net/src/main/java/com/drake/net/scope/PageCoroutineScope.kt

@@ -37,11 +37,12 @@ class PageCoroutineScope(
             readCache = false
             cacheSucceed = it
         }
+
         page.trigger()
     }
 
     override fun readCache(succeed: Boolean) {
-        if (succeed) {
+        if (succeed && !animate) {
             page.showContent()
         }
         page.setTag(R.id.cache_succeed, succeed)

+ 1 - 1
sample/src/main/java/com/drake/net/sample/MainActivity.kt

@@ -28,7 +28,7 @@ class MainActivity : AppCompatActivity() {
                 textView.text = data.await()
             }
 
-        }.showLoading()
+        }.autoRefresh()
     }
 }