Flutter – 進捗状況をダイアログで表示させてみる
はじめに
アクションに対する反応が無いと不安になる
時間が掛かる操作なら、現在作業中を表現する必要がある
環境
Flutter 3
Windows 向け
実装例
下記サイトの情報を利用しました
showFutureLoader(BuildContext context, Future future) を呼び出す
Future に時間が掛かる処理を渡すことで簡単に実現できた
static showDemo(BuildContext context) {
showFutureLoader(context, wait10second());
}
// 10秒掛かる処理
static Future wait10second() async {
print("wait start");
await Future.delayed(const Duration(seconds: 2));
print("wait 1");
await Future.delayed(const Duration(seconds: 2));
print("wait 2");
await Future.delayed(const Duration(seconds: 2));
print("wait 3");
await Future.delayed(const Duration(seconds: 2));
print("wait 4");
await Future.delayed(const Duration(seconds: 2));
print("wait finish");
}
同サイトの、Stream を使った例は自分には難しくて、上の内容だけで自分の実装では十分だったので未検証
まとめ
元々、Flutter はダイアログ表示がレイアウト定義に埋め込みで汎用性が低いことに不満も有ったが、今回の実装は別クラスに分離できて汎用的に利用しやすくて良かった