文章目录[x]
- 1:showCupertinoModalPopup 方法
- 2:CupertinoActionSheet
- 3:CupertinoActionSheetAction
CupertinoActionSheet是iOS风格的模式底部Dialog列表。向用户显示与当前上下文相关的一组两个或更多选项的选择提示;
class CupertinoActionSheetApp extends StatelessWidget{
@override
Widget build(BuildContext context) => CupertinoApp(
home: _HomePage(),
);
}
class _HomePage extends StatelessWidget{
@override
Widget build(BuildContext context) {
return Center(
child: CupertinoButton(child: Text("show dialog"), onPressed: (){
_showDialog(context);
}),
);
}
void _showDialog(BuildContext cxt){
showCupertinoModalPopup<int>(context: cxt, builder:(cxt){
var dialog =CupertinoActionSheet(
title: Text("This is Title"),
message: Text('Chose a item !'),
cancelButton: CupertinoActionSheetAction(onPressed: (){
}, child: Text("Cancel")),
actions: <Widget>[
CupertinoActionSheetAction(onPressed: (){
Navigator.pop(cxt,1);
}, child: Text('Apple')),
CupertinoActionSheetAction(onPressed: (){
Navigator.pop(cxt,2);
}, child: Text('Windows')),
CupertinoActionSheetAction(onPressed: (){
Navigator.pop(cxt,3);
}, child: Text('Linux')),
],
);
return dialog;
});
}
}
如上为显示列表的部分代码;
showCupertinoModalPopup 方法
从屏幕底部向上滑动的模式显示iOS样式弹出窗口。
这样的弹出窗口是菜单或对话框的替代方案,并阻止用户与应用程序的其余部分进行交互。
context
参数用于查找弹出窗口的[Navigator]。 它仅在调用方法时使用。 在弹出窗口关闭之前,可以从树中安全地删除其相应的窗口小部件。
builder
参数通常构建一个CupertinoActionSheet
小部件。
小部件下方的内容使用ModalBarrier
调暗。 由builder
构建的小部件不与最初调用showCupertinoModalPopup
的位置共享上下文。 用一个 [StatefulBuilder]或小部件需要的自定义[StatefulWidget]动态更新。
返回一个Future
,它解析为弹出窗口关闭时传递给[Navigator.pop]的值。
CupertinoActionSheet
创建iOS样式的列表。其构造函数如下
const CupertinoActionSheet({
Key key,
this.title,
this.message,
this.actions,
this.messageScrollController,
this.actionScrollController,
this.cancelButton,
})
其中的actions为CupertinoActionSheetAction
的Widget数组,而cancelButton
也一般为CupertinoActionSheetAction
。
actionScrollController
为滚动控制器,可用于控制操作表中actions
的滚动。
CupertinoActionSheetAction
通常用于CupertinoActionSheet
的按钮。主要包含一个child widget和一个点击回掉;
const CupertinoActionSheetAction({
@required this.onPressed,
this.isDefaultAction = false,
this.isDestructiveAction = false,
@required this.child,
})
isDefaultAction
此操作是否是操作表中的默认选项,默认按钮具有粗体文本。
isDestructiveAction
此操作是否可能更改或删除数据。要被删除按钮有红色文字。