【问题标题】:How to keep application awake in flutter?如何让应用程序保持清醒?
【发布时间】:2018-04-06 02:44:53
【问题描述】:

如何防止应用程序在颤动中锁定屏幕?

是否有标志可以将其关闭或打开? Flutter SDK 会暴露这个吗?

类似keepAwake(true);

谢谢

【问题讨论】:

    标签: flutter


    【解决方案1】:

    由于@Tree提到的对screen plugin的支持已经停止并且现在存在一些问题,您可以使用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);
    

    Learn more.

    【讨论】:

    • 我应该在哪里添加 Wakelock.enable() ?我希望它出现在我的应用程序的每一页
    • 2021 年还推荐这个吗? IE。我们真的需要第三方插件来做一些常见的事情吗?!? Flutter 不提供一些东西吗?
    • @SePröbläm 嗨,我仍在维护它 :) 我们最近也添加了 macOS 支持? 此外,Flutter 是开源的 - 但是他们有第一方插件,他们确实说过,如果存在更好的第三方项目,他们将放弃他们的第一方解决方案。那么他们为什么要为完美运行的东西创建一个呢?
    • @creativecreatorormaybenot 很高兴知道。非常感谢您提供!
    • 我假设这会使应用程序在后台运行,并且您可以播放,例如“RINGRINGRING”之类的声音 - 是否也可以以某种方式打开屏幕?
    【解决方案2】:

    我找到了可以完成这项工作的插件。 https://pub.dartlang.org/packages/screen

    import 'package:screen/screen.dart';
    
    // Prevent screen from going into sleep mode:
    Screen.keepOn(true);
    

    你还需要为android设置权限

    <uses-permission android:name="android.permission.WAKE_LOCK" />
    

    【讨论】:

    • 现在这被称为 Stackoverflow 精神,而不是更新您的精神,您接受了其他人的回答:D
    • @user6274128 正因为如此,我才给他们两个投了赞成票!
    【解决方案3】:

    由于@creativecreator 或可能尚未回答,您可以使用wakeLock 来保持屏幕开启。但我想添加Wakelock.enable(); 的放置位置。 这是一个代码 sn-p 我如何使用它,它对我来说很好:

    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()
        );
      }
    }
    

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

    【讨论】:

    【解决方案4】:

    这个包做的工作 https://pub.dev/packages/wakelock

    依赖于 Flutter Wakelock class

    权限 唤醒锁插件不需要任何平台上的任何权限。 这是因为它只启用屏幕唤醒锁,而不是任何可以让应用在后台保持活动的部分 (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(),
        );
      }
    }
    

    注意??‍♂️:你必须停止并再次运行

    【讨论】:

      猜你喜欢
      • 2010-09-08
      • 2019-08-27
      • 2020-04-16
      • 1970-01-01
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      • 2016-08-24
      • 1970-01-01
      相关资源
      最近更新 更多