system_app_bar.dart 2.51 KB
import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/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;

  const SystemAppBar(this.title,
      {Key key,
      this.rightImgName,
      this.onTap,
      this.onTapRight,
      this.showLeading = true})
      : super(key: key);

  @override
  Widget build(BuildContext context) {
    return AppBar(
      elevation: 0,
      leading: showLeading
          ? InkWell(
              onTap: onTap,
              child: Padding(
                  padding: EdgeInsets.symmetric(
                      horizontal: ScreenUtil().setWidth(40),
                      vertical: ScreenUtil().setWidth(15)),
                  child: Row(
                    children: <Widget>[
                      Image.asset(
                        "assets/icon_back.png",
                        width: ScreenUtil().setWidth(20),
                        height: ScreenUtil().setWidth(31),
                      )
                    ],
                  )),
            )
          : Container(),
      title: Text(
        title,
        style: TextStyle(
            color: MyColours.color_353535,
            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),
                            width: ScreenUtil().setWidth(40))
                        : Container(
                            // color: Colors.red,
                            alignment: Alignment.center,
                            child: Text(
                              rightImgName,
                              style: TextStyle(color: MyColours.app_main),
                            ),
                          )),
              )
            : Text('')
      ],
      centerTitle: true, // 标题居中
    );
  }

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