| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import 'package:flutter/Material.dart';
- import 'package:flutter_screenutil/flutter_screenutil.dart';
- /// 顶部栏
- class TopBar extends StatelessWidget {
- /// 左边的组件,例如返回按钮
- final Widget? leftWidget;
- /// 中间的组件,例如标题
- final Widget? centerWidget;
- /// 右边的组件
- final Widget? rightWidget;
- const TopBar({
- super.key,
- this.leftWidget,
- this.centerWidget,
- this.rightWidget,
- });
- @override
- Widget build(BuildContext context) {
- return Container(
- // 宽度撑满父组件
- width: double.infinity,
- height: kToolbarHeight,
- // 背景颜色
- color: Colors.transparent,
- child: ConstrainedBox(
- // 设置宽度为无限大,撑满父组件,否则Stack获取不到高度,会报错
- constraints: BoxConstraints(minWidth: double.infinity),
- child: Stack(
- alignment: Alignment.center,
- children: [
- // 左边按钮
- Positioned(
- left: 16.w,
- child: leftWidget != null ? leftWidget! : SizedBox.shrink(),
- ),
- // 中间的标题
- Positioned(
- left: 0,
- right: 0,
- child: Align(
- alignment: Alignment.center,
- child: centerWidget != null ? centerWidget! : SizedBox.shrink(),
- ),
- ),
- // 右边的按钮
- Positioned(
- right: 16.w,
- child: rightWidget != null ? rightWidget! : SizedBox.shrink(),
- ),
- ],
- ),
- ),
- );
- }
- }
|