You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.4 KiB
92 lines
2.4 KiB
import 'package:flutter/material.dart'; |
|
import 'package:flutter_screenutil/flutter_screenutil.dart'; |
|
|
|
class MyAppBar extends StatelessWidget implements PreferredSizeWidget { |
|
final Function onTap; |
|
final Widget action; |
|
List<Widget> actions; |
|
final Widget bottom; |
|
final Widget titleChild; |
|
final String title; |
|
final double titleSize; |
|
final Color titleColor; |
|
final Color leadingColor; |
|
final Color background; |
|
final Size preferredSize; |
|
final double toolbarHeight; |
|
final bool leading; |
|
final Brightness brightness; |
|
|
|
MyAppBar({ |
|
Key key, |
|
this.onTap, |
|
this.action, |
|
this.actions, |
|
this.bottom, |
|
this.titleChild, |
|
this.title, |
|
this.toolbarHeight, |
|
this.background = const Color(0xFFF7F7F7), |
|
this.leadingColor = Colors.black, |
|
this.titleColor = Colors.black, |
|
this.titleSize = 18, |
|
this.brightness = Brightness.light, |
|
this.leading = true, |
|
}) : preferredSize = Size.fromHeight(toolbarHeight ?? kToolbarHeight), |
|
super(key: key) { |
|
if (actions == null) |
|
actions = []; |
|
if (action != null) { |
|
actions.add( |
|
Container( |
|
margin: EdgeInsets.only(right: 15), |
|
child: GestureDetector( |
|
onTap: onTap, |
|
child: action, |
|
), |
|
), |
|
); |
|
} |
|
} |
|
|
|
@override |
|
Widget build(BuildContext context) { |
|
return AppBar( |
|
backgroundColor: background, |
|
elevation: 0, |
|
brightness: brightness, |
|
leading: leading |
|
? GestureDetector( |
|
onTap: () { |
|
Navigator.of(context).pop(); |
|
}, |
|
child: Container( |
|
alignment: Alignment.centerRight, |
|
margin: EdgeInsets.only(left: 10), |
|
padding: EdgeInsets.all(6), |
|
child: Icon( |
|
Icons.arrow_back_ios, |
|
color: leadingColor, |
|
size: 24, |
|
), |
|
), |
|
) |
|
: Container(), |
|
titleSpacing: 2, |
|
centerTitle: false, |
|
leadingWidth: leading ? 56 : 10.w, |
|
title: ((title == null || title == "") && titleChild != null) |
|
? titleChild |
|
: Text( |
|
title, |
|
style: TextStyle( |
|
color: titleColor, |
|
fontWeight: FontWeight.bold, |
|
fontSize: titleSize, |
|
), |
|
), |
|
actions: actions, |
|
bottom: bottom, |
|
); |
|
} |
|
}
|
|
|