You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tangheem/lib/widgets/new/CommonHeader.dart

119 lines
4.6 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:tangheem/classes/colors.dart';
import 'package:tangheem/extensions/int_extensions.dart';
import 'package:tangheem/extensions/string_extensions.dart';
import 'package:tangheem/extensions/widget_extensions.dart';
enum CommonHeaderEnum { ZoomIn, ZoomOut, ShareAsText, ShareAsImage }
class CommonHeader extends StatelessWidget {
final String title;
final Color gradiantColor;
final String assetImage;
final double ratio;
final bool isCustom;
final String message;
final Function(CommonHeaderEnum) onTap;
CommonHeader(this.title, this.assetImage, this.gradiantColor, {Key key, this.ratio, this.isCustom = false, this.message, this.onTap}) : assert((isCustom == true && message == null) ? false : true);
@override
Widget build(BuildContext context) {
bool isPortrait = MediaQuery.of(context).orientation == Orientation.portrait;
return AspectRatio(
aspectRatio: ratio ?? 469 / 313,
child: Stack(
alignment: Alignment.center,
children: [
Container(
decoration: BoxDecoration(
color: Colors.transparent,
image: DecorationImage(
fit: BoxFit.cover,
image: AssetImage(assetImage),
),
),
),
Container(
decoration: BoxDecoration(
color: Colors.white,
gradient: LinearGradient(
begin: FractionalOffset.bottomLeft,
end: FractionalOffset.topRight,
colors: [
Color(0x00FFFFFF),
gradiantColor.withOpacity(.75),
gradiantColor,
],
stops: [0.0, 0.45, 1.0],
),
),
),
isCustom
? Column(
mainAxisAlignment: isPortrait ? MainAxisAlignment.end : MainAxisAlignment.center,
children: [
title.toText(30),
message.toText(16, textAlign: TextAlign.center).paddingOnly(top: 16, left: 50, right: 50),
16.height,
Row(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: [
PopupMenuButton(
child: SvgPicture.asset("assets/icons/new/share.svg", height: 20, width: 20, color: Colors.white),
padding: EdgeInsets.fromLTRB(4, 4, 0, 4),
itemBuilder: (_) => <PopupMenuItem<int>>[
PopupMenuItem(
value: 1,
child: Text(
"مشاركة رابط",
style: TextStyle(color: ColorConsts.primaryBlack),
),
),
PopupMenuItem(
value: 2,
child: Text(
"مشاركة صورة",
style: TextStyle(color: ColorConsts.primaryBlack),
),
)
],
onSelected: (int value) {
if (value == 1) {
onTap(CommonHeaderEnum.ShareAsText);
} else {
onTap(CommonHeaderEnum.ShareAsImage);
}
},
),
12.width,
SvgPicture.asset("assets/icons/new/zoom_out.svg", height: 20, width: 20, color: Colors.white).onPress(() {
onTap(CommonHeaderEnum.ZoomOut);
}),
12.width,
SvgPicture.asset("assets/icons/new/zoom_in.svg", height: 20, width: 20, color: Colors.white).onPress(() {
onTap(CommonHeaderEnum.ZoomIn);
}),
],
),
if (isPortrait) 32.height,
],
)
: Column(
mainAxisSize: MainAxisSize.min,
children: [
Image.asset('assets/icons/new/Tangeem-logo-W.png', width: 50),
26.height,
title.toText(30),
],
).paddingOnly(right: isPortrait ? 0 : 120),
],
),
);
}
}