Flutter初心者の学習記録 第20回:SnackBar に似ている「表示コントローラ」一覧

Flutter 通知 UI まとめ

Flutter における「SnackBar と類似する表示 UI コントローラ」まとめ

Flutter には、SnackBar のように「特定の UI を API で呼び出す」仕組みが複数あります。
SnackBar は ScaffoldMessenger.of(context).showSnackBar() で表示できますが、同じような専用コントローラを持つ UI を以下に整理しました。

SnackBar に似た UI コントローラ一覧


1. MaterialBanner(ScaffoldMessenger 管理)

ScaffoldMessenger.of(context).showMaterialBanner(banner);
  • SnackBar:画面下
  • MaterialBanner:画面上

2. BottomSheet(showBottomSheet / showModalBottomSheet)

・ローカル BottomSheet(Scaffold 管理)

Scaffold.of(context).showBottomSheet(
  (context) => Container(height: 200),
);

・モーダル BottomSheet(Navigator 管理)

showModalBottomSheet(
  context: context,
  builder: (_) => Container(height: 200),
);

3. Dialog(showDialog)

showDialog(
  context: context,
  builder: (_) => AlertDialog(
    title: Text("通知"),
    content: Text("SnackBar より強く伝えたい内容"),
  ),
);

4. Toast(Flutter プラグイン)

Fluttertoast.showToast(msg: "Hello");

5. OverlayEntry(完全カスタム通知)

final overlay = OverlayEntry(
  builder: (_) => Positioned(
    top: 50,
    child: Material(
      child: Text("カスタム通知"),
    ),
  ),
);
Overlay.of(context).insert(overlay);

6. BottomSheet Controller

final controller = Scaffold.of(context).showBottomSheet(
  (_) => Container(height: 200),
);

// 閉じる
controller.close();

SnackBar に近い順ランキング

  1. MaterialBanner
  2. BottomSheet
  3. Dialog
  4. Toast
  5. Overlay

ScaffoldMessenger が扱う UI

・SnackBar

ScaffoldMessenger.of(context).showSnackBar(
  SnackBar(...),
);

・MaterialBanner

ScaffoldMessenger.of(context).showMaterialBanner(
  MaterialBanner(...),
);

目的別おすすめ UI

目的UI理由
軽い通知SnackBar画面下に控えめに表示
重要通知MaterialBanner目立つ位置に固定
操作含む UIBottomSheet広い領域を表示可能
警告Dialog操作を止めて表示
軽量通知Toastモバイル的通知
特殊カスタムOverlayEntry自由な UI が作れる

各 UI 比較表

項目SnackBarMaterialBannerBottomSheetDialogToastOverlayEntry
主な用途軽い通知重要通知操作 UI警告軽量通知カスタム通知
表示位置下から中央下/中央自由
管理ScaffoldMessengerScaffoldMessengerScaffold/NavigatorNavigatorプラグインOverlay
自動で消える××××

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です