개요
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で開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。