Dialog 在 app 中非常常見,且用途廣泛,從確認到提醒,從簡單到複雜的客製化介面,今天我們就要來好好了解一下在 flutter 中 Dialog 是如何被建構跟被使用的。
是目前常見的 material design dialog 的基本類別
接下來我們要提到的 AlertDialog , SimpleDialog 都是基於他來實現的
用來通知使用者需要確認的狀況,具有可以操作的標題內容與按鈕
AlertDialog({
Key key,
Widget title,
EdgeInsetsGeometry titlePadding,
TextStyle titleTextStyle,
Widget content,
EdgeInsetsGeometry contentPadding: const EdgeInsets.fromLTRB(24.0, 20.0, 24.0, 24.0),
TextStyle contentTextStyle,
List<Widget> actions,
EdgeInsetsGeometry actionsPadding: EdgeInsets.zero,
VerticalDirection actionsOverflowDirection,
double actionsOverflowButtonSpacing,
EdgeInsetsGeometry buttonPadding,
Color backgroundColor,
double elevation,
String semanticLabel,
EdgeInsets insetPadding: _defaultInsetPadding,
Clip clipBehavior: Clip.none,
ShapeBorder shape,
})
提供用戶多個選項可以選擇時使用
SimpleDialog({
Key key,
Widget title,
EdgeInsetsGeometry titlePadding: const EdgeInsets.fromLTRB(24.0, 24.0, 24.0, 0.0),
TextStyle titleTextStyle,
List<Widget> children,
EdgeInsetsGeometry contentPadding: const EdgeInsets.fromLTRB(0.0, 12.0, 0.0, 16.0),
Color backgroundColor,
double elevation,
String semanticLabel,
ShapeBorder shape
})
顯示 builder 中的 Dialog,也可以接收 Dialog 的回傳值
Future<T> showDialog <T>(
{@required BuildContext context,
WidgetBuilder builder,
bool barrierDismissible: true, //dialog 背後的屏障被點擊時是否關閉 dialog
Color barrierColor,
bool useSafeArea: true,
bool useRootNavigator: true,
RouteSettings routeSettings,
)