flutter 底部弹窗 showModalBottomSheet 自定义样式和回调

//data 需要传递的数据 context 上下文 需要显示的地方 调用:

_showBuyModalBottomSheet(
data,
context: context,
);

//_showBuyModalBottomSheet方法 实现有状态组件的showModalBottomSheet

_showBuyModalBottomSheet(Data data, {@required BuildContext context}) {
showModalBottomSheet(
context: context,
builder: (BuildContext context) {
return Container(
color: Colors.white,
child: GestureDetector(
child: BottomModal(//弹窗样式
onCancel: () {//取消回调
Navigator.of(context).pop();//隐藏弹出框
print(“onCancle1111111”);//处理data或业务逻辑
},
onSure: () async {//确认回调
print(“onSure1111111”);//处理data或业务逻辑
},
),
),
);
});
}

//BottomModal 弹窗样式 可根据要求自行设置样式和回调方法数量 (或者点击事件过多,可以以集合方式传入)
class BottomModal extends StatefulWidget {
final Function onSure;
final Function onCancel;

const BottomModal({Key key, this.onSure, this.onCancel}) : super(key: key);

@override
State createState() {
return _BottomModalState(onSure: this.onSure, onCancel: this.onCancel);
}
}

class _BottomModalState extends State {
final Function onSure;
final Function onCancel;

_BottomModalState({this.onSure, this.onCancel});

@override
Widget build(BuildContext context) {
return Container(
height: 120,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
InkWell(
child: Container(
height: 50,
alignment: AlignmentDirectional.center,
child: Text(
“保存”,
style: TextStyle(fontSize: 18),
),
),
onTap: () {
onSure();
},
),
Container(
height: 10,
color: Colors.black,
),
InkWell(
child: Container(
height: 50,
alignment: AlignmentDirectional.center,
child: Text(
“取消”,
style: TextStyle(fontSize: 18),
),
),
onTap: () {
onCancel();
},
),
],
),
);
}
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值