starwork_flutter/lib/common/widgets/custome_app_bar_wdiget.dart

64 lines
1.8 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
class CustomAppBarWidget extends StatelessWidget implements PreferredSizeWidget {
final String title;
final List<Widget>? actions;
final Widget? leading;
final bool centerTitle;
final Color? backgroundColor;
final Color? titleColor;
final Color? backIconColor;
final double? elevation;
final bool? showBackButton;
const CustomAppBarWidget({
super.key,
required this.title,
this.actions,
this.leading,
this.centerTitle = true,
this.backgroundColor = Colors.white,
this.titleColor = Colors.black,
this.backIconColor = Colors.black,
this.elevation,
this.showBackButton = true,
});
@override
Widget build(BuildContext context) {
// 判断是否需要显示返回按钮
bool showBackButton = ModalRoute.of(context)?.canPop ?? false;
return AppBar(
title: Text(
title,
style: TextStyle(
fontSize: 18.sp,
fontWeight: FontWeight.w500,
color: titleColor,
),
),
actions: actions,
automaticallyImplyLeading: this.showBackButton ?? true,
// 根据是否有自定义leading来决定使用什么
leading: leading ??
(showBackButton && this.showBackButton == true
? IconButton(
icon: Icon(
Icons.arrow_back_ios_new_rounded,
color: backIconColor,
),
onPressed: () => Navigator.of(context).pop(),
)
: null),
// 当有leading时标题默认左对齐否则按centerTitle参数决定
centerTitle: false,
backgroundColor: backgroundColor,
elevation: elevation,
);
}
@override
Size get preferredSize => const Size.fromHeight(kToolbarHeight);
}