system_app_bar.dart 3.7 KB
import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/utils.dart';

class SystemAppBar extends StatelessWidget implements PreferredSizeWidget {
  final String title;
  final String rightImgName;
  final GestureTapCallback onTap;
  final bool showLeading;
  final GestureTapCallback onTapRight;
  final String leftTitle;
  final Color bgColor;
  final bool needWhite;
  final Color titleColor;

  const SystemAppBar(this.title,
      {Key key,
      this.rightImgName,
      this.onTap,
      this.onTapRight,
      this.showLeading = true,
      this.bgColor = MyColours.color_ffffff,
      this.needWhite = false,
      this.leftTitle = '',
      this.titleColor = MyColours.color_353535})
      : super(key: key);

  @override
  Widget build(BuildContext context) {
    return AppBar(
      backgroundColor: bgColor,
      elevation: 0,
      leadingWidth:
          leftTitle != '' ? ScreenUtil().setWidth(84 * 2 + 40 + 10) : 56,
      leading: showLeading
          ? InkWell(
              onTap: onTap,
              child: Padding(
                  padding: EdgeInsets.symmetric(
                      horizontal: ScreenUtil().setWidth(40),
                      vertical: ScreenUtil().setWidth(15)),
                  child: Row(
                    children: <Widget>[
                      Image.asset(
                        needWhite
                            ? "assets/icon_white.png"
                            : "assets/icon_back.png",
                        width: ScreenUtil().setWidth(20),
                        height: ScreenUtil().setWidth(31),
                      ),
                      leftTitle != ''
                          ? Padding(
                              padding: EdgeInsets.only(
                                  left: ScreenUtil().setWidth(20)),
                              child: Text(leftTitle,
                                  style: TextStyle(
                                      fontSize: ScreenUtil().setWidth(30),
                                      color: MyColours.color_333333)),
                            )
                          : Container()
                    ],
                  )),
            )
          : Container(),
      title: Text(
        title,
        style: TextStyle(
            color: needWhite ? MyColours.color_fefefe : titleColor,
            fontSize: ScreenUtil().setSp(34),
            decoration: TextDecoration.none),
      ),
      actions: <Widget>[
        ObjectUtil.isNotEmpty(rightImgName)
            ? InkWell(
                onTap: onTapRight,
                child: Padding(
                    padding: EdgeInsets.only(right: ScreenUtil().setWidth(40)),
                    child: rightImgName.endsWith('png')
                        ? Image.asset(
                            Utils.getImgPath(
                                rightImgName.replaceAll('.png', '')),
                            width: ScreenUtil().setWidth(48))
                        : Container(
                            // color: Colors.red,
                            alignment: Alignment.center,
                            child: Text(
                              rightImgName,
                              style: TextStyle(
                                  color: MyColours.color_199095,
                                  fontSize: ScreenUtil().setSp(34)),
                            ),
                          )),
              )
            : Text('')
      ],
      centerTitle: true, // 标题居中
    );
  }

  @override
  // TODO: implement preferredSize
  Size get preferredSize => new Size.fromHeight(50.0);
}