Build Android (FCM) / build-android-fcm (push) Canceled after 0s
Build Android / build-android (push) Canceled after 0s
Build iOS / build-ios (push) Canceled after 0s
Build Linux / build-linux (push) Canceled after 0s
Build macOS / build-macos (push) Canceled after 0s
Build Windows / build-windows (push) Canceled after 0s
Release (main) / android (oneme) (push) Canceled after 0s
Release (main) / android (qlyra) (push) Canceled after 0s
Release (main) / windows (push) Canceled after 0s
Release (main) / linux (push) Canceled after 0s
Release (main) / macos (push) Canceled after 0s
Release (main) / ios (push) Canceled after 0s
Release (main) / release (push) Canceled after 0s
42 lines
963 B
Dart
42 lines
963 B
Dart
import 'dart:io' show Platform;
|
|
|
|
import 'package:flutter/services.dart';
|
|
|
|
import 'logger.dart';
|
|
|
|
class ScreenWake {
|
|
ScreenWake._();
|
|
|
|
static final ScreenWake instance = ScreenWake._();
|
|
|
|
static const _channel = MethodChannel('ru.qlyra.app/screen');
|
|
|
|
final Set<Object> _holders = <Object>{};
|
|
|
|
bool get _supported {
|
|
try {
|
|
return Platform.isAndroid || Platform.isIOS;
|
|
} catch (_) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
Future<void> acquire(Object holder) async {
|
|
if (!_supported || !_holders.add(holder)) return;
|
|
if (_holders.length == 1) await _apply(true);
|
|
}
|
|
|
|
Future<void> release(Object holder) async {
|
|
if (!_supported || !_holders.remove(holder)) return;
|
|
if (_holders.isEmpty) await _apply(false);
|
|
}
|
|
|
|
Future<void> _apply(bool enabled) async {
|
|
try {
|
|
await _channel.invokeMethod<void>('setKeepAwake', {'enabled': enabled});
|
|
} catch (e) {
|
|
logger.w('ScreenWake._apply: enabled=$enabled $e');
|
|
}
|
|
}
|
|
}
|