如何让应用程序保持清醒?

Tre*_*ree 17 flutter

如何防止应用程序锁定屏幕?

是否有一个标志可以将其关闭?flutter SDK会暴露这个吗?

就像是 keepAwake(true);

谢谢

Tre*_*ree 26

我发现插件可以完成这项工作. https://pub.dartlang.org/packages/screen

import 'package:screen/screen.dart';

// Prevent screen from going into sleep mode:
Screen.keepOn(true);
Run Code Online (Sandbox Code Playgroud)

您还需要为android设置权限

<uses-permission android:name="android.permission.WAKE_LOCK" />
Run Code Online (Sandbox Code Playgroud)

  • 现在这就是所谓的 Stackoverflow 精神,你没有更新你的,而是接受了别人的答案:D (12认同)
  • @user6274128 正是因为这样做,我才给他们俩投了赞成票! (2认同)

cre*_*not 16

至于支持屏幕插件@Tree提到已经停产,现在也有一些问题,你可以使用wakelock
完全公开:我是该插件的作者,但是,它基本上是该screen插件的唤醒锁功能的一部分,已修复了以下问题:

import 'package:wakelock/wakelock.dart';

// To keep the screen on:
Wakelock.enable(); // or Wakelock.toggle(on: true);

// To let the screen turn off again:
Wakelock.disable(); // or Wakelock.toggle(on: false);
Run Code Online (Sandbox Code Playgroud)

学到更多。

  • 2021 年仍然推荐这样做吗?也就是说,我们真的需要第三方插件来实现常见的功能吗?!?Flutter 没有提供一些东西吗? (3认同)
  • @SePröbläm 你好,我仍在维护它:)我们最近还添加了 **macOS** 支持 另外,Flutter 是开源的 - 他们有第一方插件,但是,他们确实表示他们将放弃第一方如果存在更好的第三方项目,则提供解决方案。那么他们为什么要创造一个运行完美的东西呢? (2认同)

小智 6

这个包完成工作 https://pub.dev/packages/wakelock

这取决于 Flutter Wakelock 类

权限 唤醒锁插件不需要任何平台上的任何权限。这是因为它仅启用屏幕唤醒锁,而不启用任何使应用程序在后台保持活动状态的部分(CPU)唤醒锁。

如何使用它?

// to enable the Android and iOS wakelock
Wakelock.enable();

// to disables the wakelock again.
Wakelock.disable();



import 'package:flutter/material.dart';
import 'package:wakelock/wakelock.dart';


void main() {
  runApp( MyApp());
}


class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    Wakelock.enable(); // Here :)
    return MaterialApp(
      home:  MyHomePage(),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

注意:您必须停止并再次运行


小智 5

正如@creativecreatorormaybe 尚未回答的那样,您可以使用wakeLock 来保持屏幕打开。但我想添加放置Wakelock.enable();. 这是我如何使用它的代码片段,它对我来说效果很好:

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    Wakelock.enable();
    return MaterialApp(
      debugShowCheckedModeBanner: false,
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        home: MainScreen()
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

我希望它能解决你的问题。这是该包的链接:https://pub.dev/packages/wakelock