Plugin that allows you to keep the device screen awake, i.e. prevent the screen from sleeping
The plugin allows you to enable and toggle the screen wakelock, which prevents the screen from turning off automatically.
Essentially, this allows you to keep the device awake, i.e. prevent the device from sleeping.
Platform | wakelock support |
---|---|
Android | ✅ |
iOS | ✅ |
Web | ✅ |
macOS | ✅ |
Windows | ✅ |
Linux | planned |
To use this plugin, follow the installing guide.
The wakelock
plugin does not require any special permissions on any platform
This is because it only enables the screen wakelock and not any partial (CPU) wakelocks that would keep the app alive in the background.
Everything in this plugin is controlled via the Wakelock
class.
If you want to enable the wakelock, i.e. keep the device awake, you can simply call Wakelock.enable
and to disable it again, you can use Wakelock.disable
:
import 'package:wakelock/wakelock.dart';
// ...
// The following line will enable the Android and iOS wakelock.
Wakelock.enable();
// The next line disables the wakelock again.
Wakelock.disable();
For more advanced usage, you can pass a bool
to Wakelock.toggle
to enable or disable the wakelock and also retrieve the current wakelock status using
Wakelock.isEnabled
:
import 'package:wakelock/wakelock.dart';
// ...
// The following lines of code toggle the wakelock based on a bool value.
bool enable = true;
// The following statement enables the wakelock.
Wakelock.toggle(enable: enable);
enable = false;
// The following statement disables the wakelock.
Wakelock.toggle(enable: enable);
// If you want to retrieve the current wakelock status,
// you will have to be in an async scope
// to await the Future returned by `enabled`.
bool wakelockEnabled = await Wakelock.enabled;
If you want to wait for the wakelock toggle to complete (which takes an insignificant amount of
time), you can also await
any of Wakelock.enable
, Wakelock.disable
, and Wakelock.toggle
.
WidgetsBinding
is initializedIf you want to call Wakelock.enable()
or the other functions before runApp()
(e.g. in main()
),
you will have to ensure that the WidgetsBinding
is initialized first:
void main() {
WidgetsFlutterBinding.ensureInitialized();
Wakelock.enable();
runApp(..);
}
In general, it is advisable to make your wakelock dependent on certain components within your app
instead, e.g. by only enabling it (continually) when a certain widget is visible.
There is no negative impact in calling Wakelock.enable()
more often.
Wakelock.enable()
in main()
As touched on in the previous paragraph, calling Wakelock.enable()
in your main()
function is
not the best approach for a number of reasons.
The most important factors are:
Wakelock.enable()
once will most likely mean that the screen turns off at one
point or another anyway.This is why you should instead prefer to enable the wakelock whenever components inside of your app
that require the screen to stay on are active. This can e.g. happen in the build
method of your
widget.
If you want to learn more about how this plugin works, how to contribute, etc., you can read through the main README on GitHub.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。