개요
Flutterで開発したアプリで画面が消えにようにしたり、ユーザがアプリ内で特定機能を使う時画面が消えないようにする機能を実装する必要がある時があります。
私はアプリでTTS機能を使って繰り返して音声を再生する機能を持ってるアプリを開発しましたが、画面が消えるとTTSの繰り返し再生が中断される問題がありました。それで、TTSを使って繰り返して音声を再生する機能を実行する時、画面が消えないように実装する必要がありました。
この時、使ったパッケージがwakelockです。
- wakelock: https://pub.dev/packages/wakelock
今回のブログポストではwakelockを使ってFlutterで開発したアプリが実行された時、画面が消えにようにする方法について説明します。
wakelockのインストール
Flutterで開発したアプリが起動された時、画面が消えないようにするためにはwakelockパッケージをインストールする必要があります。次のコマンドを実行してwakelockパッケージをインストールします。
flutter pub add wakelock
enableとdisable関数
wakelockはenableとdisable関数を提供しています。wakelockのenable関数を使って自動で画面が消えないようにすることができます。これを確認するため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関数
wakelockのenableとdisable関数の代わりで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で開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。






