Flutter BottomSheet底部弹窗效果
2024-08-26 13:59:02
BottomSheet是一个从屏幕底部滑起的列表(以显示更多的内容)。你可以调用showBottomSheet()或showModalBottomSheet弹出
import 'package:flutter/material.dart';
import 'dart:async'; class BottomSheetDemo extends StatefulWidget {
@override
_BottomSheetDemoState createState() => _BottomSheetDemoState();
} class _BottomSheetDemoState extends State<BottomSheetDemo> {
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(
children: <Widget>[
Icon(Icons.pause_circle_outline),
SizedBox(width: 16.0,),
Text('01:30 / 03:30'),
Expanded(
child: Text('从头再来-刘欢', textAlign: TextAlign.right,),
),
],
),
),
);
});
} Future _openModalBottomSheet() async {
final option = await showModalBottomSheet(
context: context,
builder: (BuildContext context) {
return Container(
height: 200.0,
child: Column(
children: <Widget>[
ListTile(
title: Text('拍照',textAlign: TextAlign.center),
onTap: () {
Navigator.pop(context, '拍照');
},
),
ListTile(
title: Text('从相册选择',textAlign: TextAlign.center),
onTap: () {
Navigator.pop(context, '从相册选择');
},
),
ListTile(
title: Text('取消',textAlign: TextAlign.center),
onTap: () {
Navigator.pop(context, '取消');
},
),
],
),
);
}
); print(option);
} @override
Widget build(BuildContext context) {
return Scaffold(
key: _bottomSheetScaffoldKey,
appBar: AppBar(
title: Text('BottomSheetDemo'),
elevation: 0.0,
),
body: Container(
padding: EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
FlatButton(
child: Text('Open BottomSheet'),
onPressed: _openBottomSheet,
),
FlatButton(
child: Text('Modal BottomSheet'),
onPressed: _openModalBottomSheet,
),
]
),
],
),
),
);
}
}
效果:
文档:https://api.flutter.dev/flutter/material/BottomSheet-class.html
最新文章
- Eclipse 使用技巧
- vue DatePicker vue2.0的日期插件
- C++Builder XE8_upd1破解安装成功纪要
- (转)Android: NDK编程入门笔记
- 第二百九十三天 how can I 坚持
- AspNet MVC : 操作/控制器过滤器(action filter)
- 免费 Bootstrap 管理后台模块下载
- 使用CAShapeLayer和UIBezierPath画一个自定义半圆弧button
- NodeJS基本使用简介
- 什么是 lnmp 实现原理。
- mybatis常见问题和错误
- Echo团队Alpha冲刺随笔 - 第三天
- 《jquery实战》javascript 必知必会(2)
- VC CListCtrl 第一列列宽自适应
- apache Header set Cache-Control
- xStream完美转换XML、JSON(转)
- 微信小程序参考资料及网址
- qt程序异常结束crashed
- copyin函数
- 2017 JUST Programming Contest 3.0 E. The Architect Omar