FlutterでDialogを表示させた後、不用意に閉じさせないようにする方法です。
- Dialogの領域外をタップしても閉じさせないようにする。
- Androidの場合、戻るボタンを使用しても閉じれてしまうので、閉じれないようにする。
やり方
Dialogの領域外をタップしても閉じさせないようにするために、showDialogメソッドの barrierDismissible をfalseにします。
戻るボタンを使用して閉じさせないようにするために、builder内で生成するWidgetをさらにWillPopScoteで囲み、onWillPopの戻り値をfalseにします。
await showDialog(
/// Dialogの周囲の黒い部分をタップしても閉じないようにする
barrierDismissible: false,
context: context,
builder: (_context) {
return WillPopScope(
/// 戻るボタンを無効にする
onWillPop: () async => false,
child: builder(_context),
);
},
);
これでDialogが不用意に閉じられなくなります。