【Flutter】wakelock_plus パッケージを使って画面スリープを無効にする

エキサイト株式会社の@mthiroshiです。 エキサイトホールディングス Advent Calendar 2023の13日目を担当します。

Flutter で画面スリープを無効にする(画面を常時点灯にする)wakelock_plus パッケージについて紹介します。

wakelock_plus とは

wakelock_plus は、画面スリープを無効にするためのパッケージです。 pub.dev

wakelock_plus には、前身となる wakelock というパッケージがあります。 pub.dev

wakelock はメンテナンスされていない様子なので、現在は wakelock_plus の利用が好ましいと思います。 いくつかの issue でも、wakelock_plus の利用が推奨されています。 github.com

Flutter の画面スリープの無効化について検索すると、 2023年12月時点では wakelock の方が検索結果の上位に出てくるので注意が必要です。

使い方

下記のバージョンで動作検証しました。

wakelock_plus: ^1.1.2

公式のサンプルコードが下記です。

import 'package:wakelock_plus/wakelock_plus.dart';
// ...

// The following line will enable the Android and iOS wakelock.
WakelockPlus.enable();

// The next line disables the wakelock again.
WakelockPlus.disable();

WakelockPlus を static に呼び出して、有効 / 無効を切り替えられます。

特定の画面でのみ画面スリープを無効にしたい場合は、flutter_hooks の useEffect を使って実装できます。

import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:wakelock_plus/wakelock_plus.dart';

class DemoScreen extends HookWidget {
  const DemoScreen({
    super.key,
  });

  @override
  Widget build(BuildContext context) {

    useEffect(
      () {
        WakelockPlus.enable();
        return WakelockPlus.disable;
      },
      [],
    );

    return Scaffold(
    /// 画面の実装
    );

終わりに

Flutter で画面のスリープを無効にする wakelock_plus パッケージについて紹介しました。 実装のコード数が少なく、簡単に実現できます。 参考になれば幸いです。

採用アナウンス

エキサイトではフロントエンジニア、バックエンドエンジニア、アプリエンジニアを随時募集しております。長期インターンも歓迎していますので、興味があれば連絡いただければと思います。

募集職種一覧はこちらになります!(カジュアルからもOK) www.wantedly.com

参考

wakelock_plus | Flutter Package

useEffect function - flutter_hooks library - Dart API