Flutter 模仿实现苹果底部弹出框模仿实现苹果底部弹出框
Flutter 模仿苹果底部弹出框模仿苹果底部弹出框
新增BottmSheetDialog.dart
//
// 文件名称:SBottmSheetDialog.dart
//
// 创建日期:2020-01-010
//
// 文件描述:底部弹出框
//
// 修改履历:
// ---------------------------------------------------------------------------------
// 修改日期 修改者 修改标识 修改描述 (首行为示例)
//
//**********************************************************************************
import 'dart:ui';
import 'package:flutter/material.dart';
/// 底部弹出框
class CommonBottomSheet extends StatefulWidget {
CommonBottomSheet({Key key, this.list, this.onItemClickListener})
: assert(list != null),
super(key: key);
final list;
final OnItemClickListener onItemClickListener;
@override
_CommonBottomSheetState createState() => _CommonBottomSheetState();
}
typedef OnItemClickListener = void Function(int index);
class _CommonBottomSheetState extends State {
OnItemClickListener onItemClickListener;
var itemCount;
double itemHeight = 44;
var borderColor = Colors.white;
double circular = 10;
@override
void initState() {
super.initState();
onItemClickListener = widget.onItemClickListener;
}
@override
Widget build(BuildContext context) {
Orientation orientation = MediaQuery.of(context).orientation;
Size screenSize = MediaQuery.of(context).size;
var deviceWidth = orientation == Orientation.portrait
? screenSize.width
: screenSize.height;
print('devide width');
print(deviceWidth);
/// *2-1是为了加分割线,最后还有一个cancel,所以加1
itemCount = (widget.list.length * 2 - 1) + 1;
var height = ((widget.list.length+1) * 48).toDouble();
var cancelContainer = Container(
height: itemHeight,
margin: EdgeInsets.only(left: 10, right: 10),
decoration: BoxDecoration(
color: Colors.white, // 底色
borderRadius: BorderRadius.circular(circular),
),
child: Center(
child: GestureDetector(
onTap: () {
评论0