[Flutter] 画面が消えないようにする

2022-11-28 hit count image

Flutterで作ったアプリが起動してる時、またはアプリ内で特定な機能が使われる時、携帯の画面が消えないようにするためwakelockパッケージを使う方法について説明します。

개요

Flutterで開発したアプリで画面が消えにようにしたり、ユーザがアプリ内で特定機能を使う時画面が消えないようにする機能を実装する必要がある時があります。

私はアプリでTTS機能を使って繰り返して音声を再生する機能を持ってるアプリを開発しましたが、画面が消えるとTTSの繰り返し再生が中断される問題がありました。それで、TTSを使って繰り返して音声を再生する機能を実行する時、画面が消えないように実装する必要がありました。

この時、使ったパッケージがwakelockです。

今回のブログポストではwakelockを使ってFlutterで開発したアプリが実行された時、画面が消えにようにする方法について説明します。

wakelockのインストール

Flutterで開発したアプリが起動された時、画面が消えないようにするためにはwakelockパッケージをインストールする必要があります。次のコマンドを実行してwakelockパッケージをインストールします。

flutter pub add wakelock

enableとdisable関数

wakelockenabledisable関数を提供しています。wakelockenable関数を使って自動で画面が消えないようにすることができます。これを確認するためmain.dartファイルを開いて下記のように修正します。

...
void main() {
  WidgetsFlutterBinding.ensureInitialized();
  Wakelock.enable();

  runApp(..);
}

class _MyAppState extends State<MyApp> {
  ...
  @override
  void dispose() {
    Wakelock.disable();
    super.dispose();
  }
  ...
}
...

wakelockクラスはenable関数とdisable関数を持っています。wakelockクラスのenable関数を実行すると自動で画面が消えないようになりますし、disable関数を実行すると自動で画面が消えるようになります。

wakelockクラスの関数はWidgetsFlutterBinding.ensureInitialized()WidgetsBindingが初期化されたことを確認した後、実行する必要があります。

toggle関数

wakelockenabledisable関数の代わりでtoggle関数を使うことができます。これを確認するためmain.dartファイルを開いて下記のように修正します。

...
void main() {
  WidgetsFlutterBinding.ensureInitialized();
  Wakelock.toggle(enable: true);

  runApp(..);
}

class _MyAppState extends State<MyApp> {
  ...
  @override
  void dispose() {
    Wakelock.toggle(enable: false);
    super.dispose();
  }
  ...
}
...

enabled

wakelockが提供するenabled変数を使うと、現在画面が自動で消えないように設定されたかを確認することができます。

...
bool wakelockEnabled = await Wakelock.enabled;
...

完了

これでwakelockパッケージを使ってFlutterのアプリが実行される際に画面が消えないようにする方法について見て見ました。皆さんもwakelockパッケージを使って画面が消えないように作ってみてください。

私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!

アプリ広報

今見てるブログを作成たDekuが開発したアプリを使ってみてください。
Dekuが開発したアプリはFlutterで開発されています。

興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。

Posts