Package-level declarations

Types

Link copied to clipboard
typealias CancelFn = () -> Unit
Link copied to clipboard
class Fetch<TData : Any>(options: RequestOptions<TData> = defaultOption()) : IFetch<TData> , Serializable
Link copied to clipboard
data class FetchState<TData>(var loading: Boolean? = null, var params: TParams? = null, var data: TData? = null, var error: Throwable? = null) : IFetchStata<TData> , Copyable<FetchState<TData>>

Fetch 类持有数据的内部状态

Link copied to clipboard

Fetch.pluginImpls 本质是调用GenPluginLifecycleFn函数后保存的PluginLifecycle列表 ,这个函数的入参是Fetch实例与RequestOptions配置。

Link copied to clipboard
sealed class IFetchStata<out TData>

使用密封类或者密封接口,可以避免外部继承实现,但是不影响使用接口声明。

Link copied to clipboard
typealias MutateFn<TData> = ((TData?) -> TData) -> Unit
Link copied to clipboard
data class OnBeforeReturn<TData>(val stopNow: Boolean? = null, val returnNow: Boolean? = null, val loading: Boolean? = null, val params: TParams? = null, val data: TData? = null, val error: Throwable? = null) : IFetchStata<TData> , Copyable<OnBeforeReturn<TData>>

插件生命周期PluginLifecycle.onBefore的返回值类型, Fetch._runAsync会在请求发生前回调所有插件的PluginLifecycle.onBefore函数, 他们可以彼此覆盖。 stopNow可以阻止请求发出,不改变状态; returnNow可以将返回的状态作为Fetch.fetchState的状态改变ui;

Link copied to clipboard
data class OnRequestReturn<TData>(val requestDeferred: Deferred<TData>? = null) : Copyable<OnRequestReturn<TData>>

插件生命周期PluginLifecycle.onRequest的返回值类型, Fetch._runAsync会在调用Fetch.requestFn请求发生前回调所有插件的PluginLifecycle.onRequest函数。 插件可以通过Fetch.requestFn拿到原始的请求函数,通过返回值requestDeferredasync闭包的await, 来改变实际请求。

Link copied to clipboard
abstract class Plugin<TData : Any> : IFetch<TData> , Serializable, CoroutineScope

插件函数 useXXXPlugin 的返回值是真实的插件Plugin对象, 可以通过在useRequestPluginsImpl中调用onInit函数,用来初始化 Fetch.fetchState状态。 插件对象自身实现了协程作用域CoroutineScope,持有Fetch的实例、请求RequestOptions配置等内容。 按需实现IFetch对应Fetch中的各个函数调用,就可以在插件函数useXXXPlugin中需要使用副作用函数时,间接回调Fetch实例。 具体用例可以参考:useAutoRunPlugin

Link copied to clipboard
abstract class PluginLifecycle<TData>

插件的生命周期对象:这个对象是插件Plugin.invoke方法执行后的返回值, 用来让插件监听请求的生命周期,当执行异步请求时,会在不同的阶段调用插件的生命周期;

Link copied to clipboard
typealias RefreshFn = () -> Unit
Link copied to clipboard
data class RequestOptions<TData>
Link copied to clipboard
typealias RunFn = VoidFunction

Functions

Link copied to clipboard

返回一个空插件,避免直接使用EmptyPlugin实例

Link copied to clipboard
fun <TData : Any> useRequest(requestFn: SuspendNormalFunction<TData>, options: RequestOptions<TData> = defaultOption(), plugins: Array<@Composable (RequestOptions<TData>) -> Plugin<TData>> = emptyArray()): Tuple7<TData?, Boolean, Throwable?, RunFn, MutateFn<TData>, RefreshFn, CancelFn>

Description: 一个用来管理网络状态的Hook,它可以非常方便的接入到传统的 retrofit 网络请求模式中。 你几乎不需要做任何额外工作,就可以简单高效的在 Compose 中使用网络请求,并将请求数据作为状态,直接驱动UI。