【Flutter】入门14-对话框

SimpleDialog

 String _choice = '请选择';

  Future _openSimpleDialog() async {
    final option = await showDialog(
        context: context,
        builder: (BuildContext context) {
          return SimpleDialog(
            title: Text('请选择'),
            children: <Widget>[
              SimpleDialogOption(
                child: Text('item1'),
                onPressed: () {
                  //关闭对话框并放回 "item1"
                  Navigator.pop(context, "item1");
                },
              ),
              SimpleDialogOption(
                child: Text('item2'),
                onPressed: () {
                  Navigator.pop(context, 'item2');
                },
              ),
              FlatButton(
                  onPressed: () {
                    Navigator.pop(context, '请选择');
                  },
                  child: Text('取消'))
            ],
          );
        });

    setState(() {
      _choice = option;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(title: Text('Gecer')),
        body: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              //使用InkWell 是为了给子元素添加点击事件
              InkWell(
                onTap: _openSimpleDialog,
                child: Row(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: <Widget>[
                      Icon(
                        Icons.favorite,
                        color: Colors.redAccent,
                      ),
                      //DateFormat 引用于intl
                      Text(_choice)
                    ]),
              )
            ]));
  }

AlertDialog 

Future _openAlertDialog() async {
    final action = await showDialog(
      context: context,
      barrierDismissible: false, //当为flase时代表不能通过点击空白处关闭对话框
      builder: (BuildContext context) {
        return AlertDialog(
          title: Text('提示'),
          content: Text('To be?'),
          actions: <Widget>[
            FlatButton(
              child: Text('Cancel'),
              onPressed: () {
                Navigator.pop(context, false);
              },
            ),
            FlatButton(
              child: Text('Ok'),
              onPressed: () {
                Navigator.pop(context, true);
              },
            ),
          ],
        );
      },
    );
    setState(() {
      _choice = action.toString();
    });
  }

BottomSheet(通过key)

final _bottomSheetScaffoldKey = GlobalKey<ScaffoldState>();
  _openBottomSheet() {
    _bottomSheetScaffoldKey.currentState
        .showBottomSheet((BuildContext context) {
      return BottomAppBar(
        child: Container(
          height: 90.0,
          width: double.infinity,
          padding: EdgeInsets.all(16.0),
          child: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Icon(Icons.favorite,color:Colors.redAccent),
             Text('surprise')
            ],
          ),
        ),
      );
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        key: _bottomSheetScaffoldKey,
        appBar: AppBar(title: Text('Gecer')),
        body: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              //使用InkWell 是为了给子元素添加点击事件
              InkWell(
                onTap: _openBottomSheet,
                child: Row(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: <Widget>[
                      Icon(
                        Icons.favorite,
                        color: Colors.redAccent,
                      ),
                      Text('打开')
                    ]),
              )
            ]));
  }

BottomSheet(不通过key)

String _choice = '打开';
  Future _openModalBottomSheet() async {
    final option = await showModalBottomSheet(
        context: context,
        builder: (BuildContext context) {
          return Container(
            height: 200.0,
            child: Column(
              children: <Widget>[
                ListTile(
                  title: Text('Item1'),
                  onTap: () {
                    Navigator.pop(context, 'Item1');
                  },
                ),
                ListTile(
                  title: Text('Item2'),
                  onTap: () {
                    Navigator.pop(context, 'Item2');
                  },
                ),
                ListTile(
                  title: Text('Item3'),
                  onTap: () {
                    Navigator.pop(context, 'Item3');
                  },
                ),
              ],
            ),
          );
        });
    setState(() {
      _choice = option;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(title: Text('Gecer')),
        body: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              //使用InkWell 是为了给子元素添加点击事件
              InkWell(
                onTap: _openModalBottomSheet,
                child: Row(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: <Widget>[
                      Icon(
                        Icons.favorite,
                        color: Colors.redAccent,
                      ),
                      Text(_choice)
                    ]),
              )
            ]));
  }

SnackBar

//调用
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(title: Text('Gecer')),
        body: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              SnackBarButton()
            ]));
  }


//定义
class SnackBarButton extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return FlatButton(
      child: Text('Open SnackBar'),
      onPressed: () {
        Scaffold.of(context).showSnackBar(
          SnackBar(
            content: Text('Processing...'),
            action: SnackBarAction(
              label: 'OK',
              onPressed: () {},
            ),
          )
        );
      },
    );
  }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值