Files
MWClash/lib/common/future.dart
chen08209 3e5379dfc4 Add android separates the core process
Support core status check and force restart

Optimize proxies page and access page

Update flutter and pub dependencies

Optimize more details
2025-09-19 17:41:17 +08:00

40 lines
828 B
Dart

import 'dart:async';
import 'dart:ui';
import 'package:fl_clash/common/common.dart';
extension FutureExt<T> on Future<T> {
Future<T> withTimeout({
Duration? timeout,
String? tag,
VoidCallback? onLast,
FutureOr<T> Function()? onTimeout,
}) {
final realTimout = timeout ?? const Duration(minutes: 3);
Timer(realTimout + commonDuration, () {
if (onLast != null) {
onLast();
}
});
return this.timeout(
realTimout,
onTimeout: () async {
if (onTimeout != null) {
return onTimeout();
} else {
throw TimeoutException('${tag ?? runtimeType} timeout');
}
},
);
}
}
extension CompleterExt<T> on Completer<T> {
void safeCompleter(T value) {
if (isCompleted) {
return;
}
complete(value);
}
}