当前位置: 首页> 娱乐> 明星 > 沧州做网站最好的公司_怎么建设公司网站_seo01网站_站长工具域名解析

沧州做网站最好的公司_怎么建设公司网站_seo01网站_站长工具域名解析

时间:2025/7/14 0:47:47来源:https://blog.csdn.net/u012227177/article/details/146206771 浏览次数:2次
沧州做网站最好的公司_怎么建设公司网站_seo01网站_站长工具域名解析

1. factory函数

//调用factory构造方法后,实际返回的是Dio的子类
Dio dio = Dio();abstract class Dio {factory Dio([BaseOptions? options]) => createDio(options);
}

2. CancelToken

作用:取消操作

CancelToken cancelToken = CancelToken();//监听取消
cancelToken?.whenCancel.then((dioException) {//do something
});//取消
cancelToken.cancel();//CancelToken简化版本
class CancelToken {CancelToken();final Completer<DioException> _completer = Completer<DioException>();DioException? get cancelError => _cancelError;DioException? _cancelError;bool get isCancelled => _cancelError != null;Future<DioException> get whenCancel => _completer.future;void cancel([Object? reason]) {_cancelError = DioException(reason: reason);if (!_completer.isCompleted) {_completer.complete(_cancelError);}}
}

3. listenCancelForAsyncTask

作用:任意可以取消的Future

  //cancelToken先取消的时候,返回cancelToken中的e//future先返回的时候,返回futurestatic Future<T> listenCancelForAsyncTask<T>(CancelToken? cancelToken,Future<T> future,) {if (cancelToken == null) {return future;}return Future.any([future, cancelToken.whenCancel.then((e) => throw e)]);}

4. WeakRefrence

作用:防止内存泄露

///
///方法执行的过程中:operation有两个引用链:
///    一个是operationWeakReference
///    另外一个是operation
///方法执行完成后:
///    operation只有一个引用链:operationWeakReference,这个是cancelToken持有的。
///    假设cancelToken被静态变量持有(一直不释放)、并且operation没有使用WeakReference。
///    则operation不会被释放(一直存在内存中)。
///    如果operation关联了socket或者其他稀有资源,慢慢就会导致内存溢出。
*//
void _test() {Futuren operation = Future();WeakReference operationWeakReference = WeakReference(operation);cancelToken?.whenCancel.whenComplete(() {operationWeakReference.target?.cancel();});final response = await operation.value;
}

5. compute

作用:response超过50k,使用isolate将byte[]转换成json

Future<Object?> _decodeUtf8ToJson(Uint8List data) async {if (data.isEmpty) {return null;}return _utf8JsonDecoder.convert(data);
}Future _test(Uint8List data) {final shouldUseIsolate = conentLength >= 50 * 1024;if (shouldUseIsolate) {//如果大于50K,使用isolatereturn compute(_decodeUtf8ToJson,data,);} else {return _decodeUtf8ToJson(data)  }
}

6. 引用不同dart文件中的相同方法(区分平台)

//一般情况:引入io_adapter.dart    html情况:引入browser_adapter.dart 
import 'adapters/io_adapter.dart' if (dart.library.js_interop) 'adapters/browser_adapter.dart'if (dart.library.html) 'adapters/browser_adapter.dart' as adapter;abstract class HttpClientAdapter {factory HttpClientAdapter() => adapter.createAdapter();
}

版本: dio: 5.8.0

关键字:沧州做网站最好的公司_怎么建设公司网站_seo01网站_站长工具域名解析

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: