internal Work List screen
parent
bf8dce2afd
commit
b2466122d3
@ -0,0 +1,126 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:mohem_flutter_app/classes/colors.dart';
|
||||||
|
import 'package:mohem_flutter_app/widgets/circular_avatar.dart';
|
||||||
|
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
|
||||||
|
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
|
||||||
|
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
|
||||||
|
import 'dart:math' as math;
|
||||||
|
|
||||||
|
class ActionsFragment extends StatelessWidget {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Container(
|
||||||
|
width: double.infinity,
|
||||||
|
height: double.infinity,
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
showItem(),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget showItem() {
|
||||||
|
return Container(
|
||||||
|
width: double.infinity,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.white,
|
||||||
|
borderRadius: BorderRadius.circular(15),
|
||||||
|
boxShadow: [
|
||||||
|
BoxShadow(
|
||||||
|
color: const Color(0xff000000).withOpacity(.05),
|
||||||
|
blurRadius: 26,
|
||||||
|
offset: const Offset(0, -3),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
clipBehavior: Clip.antiAlias,
|
||||||
|
margin: EdgeInsets.all(21),
|
||||||
|
child: Stack(
|
||||||
|
clipBehavior: Clip.antiAlias,
|
||||||
|
children: [
|
||||||
|
Positioned(
|
||||||
|
left: -21,
|
||||||
|
child: Transform.rotate(
|
||||||
|
angle: 125,
|
||||||
|
child: Container(
|
||||||
|
width: 60,
|
||||||
|
height: 20,
|
||||||
|
color: Colors.black,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Column(
|
||||||
|
children: [
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.only(left: 12, right: 12, top: 12),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
CircularAvatar(),
|
||||||
|
12.width,
|
||||||
|
Expanded(
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
"Mahmoud Shrouf".toText16(),
|
||||||
|
6.height,
|
||||||
|
"Missing Swipe Request for Hussain, Mohammad has been approved"
|
||||||
|
.toText12(),
|
||||||
|
3.height,
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
"Submitted".toText10(),
|
||||||
|
12.width,
|
||||||
|
"On 07 Jan 2021"
|
||||||
|
.toText12(color: MyColors.lightTextColor)
|
||||||
|
],
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
12.height,
|
||||||
|
Container(
|
||||||
|
width: double.infinity,
|
||||||
|
height: 1,
|
||||||
|
color: MyColors.lightTextColor,
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: Center(
|
||||||
|
child: "Request Info"
|
||||||
|
.toText12(isBold: true)
|
||||||
|
.paddingOnly(left: 21, right: 21, top: 16, bottom: 8),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Center(
|
||||||
|
child: Container(
|
||||||
|
width: 1,
|
||||||
|
height: 45,
|
||||||
|
color: MyColors.lightTextColor,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: Center(
|
||||||
|
child: "Delegate"
|
||||||
|
.toText12(
|
||||||
|
color: MyColors.gradiantEndColor, isBold: true)
|
||||||
|
.paddingOnly(left: 21, right: 21, top: 16, bottom: 8),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class AttachmentsFragment extends StatelessWidget {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Container(
|
||||||
|
width: double.infinity,
|
||||||
|
height: double.infinity,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class InfoFragment extends StatelessWidget {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Container(
|
||||||
|
width: double.infinity,
|
||||||
|
height: double.infinity,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,87 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:mohem_flutter_app/classes/colors.dart';
|
||||||
|
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
|
||||||
|
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
|
||||||
|
|
||||||
|
class RequestFragment extends StatefulWidget {
|
||||||
|
@override
|
||||||
|
State<RequestFragment> createState() => _RequestFragmentState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _RequestFragmentState extends State<RequestFragment> {
|
||||||
|
bool isOpened = false;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Container(
|
||||||
|
width: double.infinity,
|
||||||
|
height: double.infinity,
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
width: double.infinity,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.white,
|
||||||
|
borderRadius: BorderRadius.circular(15),
|
||||||
|
boxShadow: [
|
||||||
|
BoxShadow(
|
||||||
|
color: const Color(0xff000000).withOpacity(.05),
|
||||||
|
blurRadius: 26,
|
||||||
|
offset: const Offset(0, -3),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
margin: EdgeInsets.all(21),
|
||||||
|
padding: EdgeInsets.only(top: 21, bottom: 21, right: 16, left: 16),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: "Hardware Mobility 161 Messenger".toText16(),
|
||||||
|
),
|
||||||
|
Icon(Icons.keyboard_arrow_down_rounded),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Column(
|
||||||
|
children: [
|
||||||
|
12.height,
|
||||||
|
showItem("Code:", "3188000067"),
|
||||||
|
showItem("Quantity:", "1"),
|
||||||
|
showItem("Line Status:", "Pending Approval"),
|
||||||
|
showItem("Transection Type:", "Move Order Issue:"),
|
||||||
|
showItem("Organization Code:", "SWD"),
|
||||||
|
showItem("From Subinventory:", "SWD_MSPS"),
|
||||||
|
showItem("To Subinventory:", "SWD_MSPS"),
|
||||||
|
showItem("Ship To Location :",
|
||||||
|
"SWD 11206-E.R. (Emergency Room)"),
|
||||||
|
showItem("Unit:", "Each"),
|
||||||
|
showItem("Date Required:", "12/23/2019 4:54:04 PM"),
|
||||||
|
showItem("Status Date:", "12/23/2019 4:54:04 PM"),
|
||||||
|
showItem("Operation Unit:", "Sehat Al Sewedi"),
|
||||||
|
showItem("Organization:", "Sehat Al Sewedi"),
|
||||||
|
showItem("From Locator:", "-"),
|
||||||
|
showItem("To Locator :", "-"),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget showItem(String title, String value) {
|
||||||
|
return Padding(
|
||||||
|
padding: const EdgeInsets.only(top: 4, bottom: 4),
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
title.toText12(isBold: true),
|
||||||
|
6.width,
|
||||||
|
title.toText12(isBold: false, color: MyColors.normalTextColor),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,105 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:mohem_flutter_app/classes/colors.dart';
|
||||||
|
import 'package:mohem_flutter_app/ui/app_bar.dart';
|
||||||
|
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
|
||||||
|
import 'package:mohem_flutter_app/ui/work_list/missing_swipe/fragments/actions_fragment.dart';
|
||||||
|
import 'package:mohem_flutter_app/ui/work_list/missing_swipe/fragments/attachments_fragment.dart';
|
||||||
|
import 'package:mohem_flutter_app/ui/work_list/missing_swipe/fragments/info_fragments.dart';
|
||||||
|
import 'package:mohem_flutter_app/ui/work_list/missing_swipe/fragments/request_fragment.dart';
|
||||||
|
import 'package:mohem_flutter_app/widgets/button/app_button.dart';
|
||||||
|
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
|
||||||
|
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
|
||||||
|
|
||||||
|
class MissingSwipeScreen extends StatelessWidget {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return DefaultTabController(
|
||||||
|
length: 4,
|
||||||
|
child: Scaffold(
|
||||||
|
appBar: appBar(context, title: "Missing Swipe Request"),
|
||||||
|
body: Container(
|
||||||
|
width: double.infinity,
|
||||||
|
height: double.infinity,
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius: BorderRadius.only(
|
||||||
|
bottomLeft: Radius.circular(20),
|
||||||
|
bottomRight: Radius.circular(20)),
|
||||||
|
gradient: LinearGradient(
|
||||||
|
transform: GradientRotation(.46),
|
||||||
|
begin: Alignment.topRight,
|
||||||
|
end: Alignment.bottomRight,
|
||||||
|
colors: [
|
||||||
|
MyColors.gradiantEndColor,
|
||||||
|
MyColors.gradiantStartColor,
|
||||||
|
]),
|
||||||
|
),
|
||||||
|
clipBehavior: Clip.antiAlias,
|
||||||
|
child: TabBar(
|
||||||
|
indicatorColor: Colors.white,
|
||||||
|
labelColor: Colors.white,
|
||||||
|
tabs: [
|
||||||
|
Tab(
|
||||||
|
text: "Request",
|
||||||
|
),
|
||||||
|
Tab(
|
||||||
|
text: "Actions",
|
||||||
|
),
|
||||||
|
Tab(
|
||||||
|
text: "Attachments",
|
||||||
|
),
|
||||||
|
Tab(
|
||||||
|
text: "Info.",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: TabBarView(
|
||||||
|
children: [
|
||||||
|
RequestFragment(),
|
||||||
|
ActionsFragment(),
|
||||||
|
AttachmentsFragment(),
|
||||||
|
InfoFragment(),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: double.infinity,
|
||||||
|
height: 60,
|
||||||
|
padding: EdgeInsets.only(left: 21, right: 21),
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: DefaultButton(
|
||||||
|
"Reject",
|
||||||
|
() {},
|
||||||
|
colors: [
|
||||||
|
Color(0xffEB8C90),
|
||||||
|
Color(0xffDE6C70),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
12.width,
|
||||||
|
Expanded(
|
||||||
|
child: DefaultButton(
|
||||||
|
"Approve",
|
||||||
|
() {},
|
||||||
|
colors: [
|
||||||
|
Color(0xff32D892),
|
||||||
|
Color(0xff1AB170),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,96 @@
|
|||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:mohem_flutter_app/theme/colors.dart';
|
||||||
|
|
||||||
|
class AppButton extends StatefulWidget {
|
||||||
|
late AppButtonState _state;
|
||||||
|
|
||||||
|
final String? text;
|
||||||
|
final double cornerRadius;
|
||||||
|
final EdgeInsets? margin;
|
||||||
|
final double? height;
|
||||||
|
final double? minWidth;
|
||||||
|
final VoidCallback? onClick;
|
||||||
|
final Color? color;
|
||||||
|
final Color? textColor;
|
||||||
|
final double fontSize;
|
||||||
|
final double elevation;
|
||||||
|
final bool bold;
|
||||||
|
|
||||||
|
AppButton(
|
||||||
|
{this.text,
|
||||||
|
this.onClick,
|
||||||
|
this.cornerRadius = 10,
|
||||||
|
this.margin,
|
||||||
|
this.height,
|
||||||
|
this.color,
|
||||||
|
this.textColor,
|
||||||
|
this.minWidth,
|
||||||
|
this.fontSize = 15,
|
||||||
|
this.bold = true,
|
||||||
|
this.elevation = 5});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<StatefulWidget> createState() => _state = AppButtonState();
|
||||||
|
|
||||||
|
enable() {
|
||||||
|
_state.setState(() {
|
||||||
|
_state.enable = true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
disable() {
|
||||||
|
_state.setState(() {
|
||||||
|
_state.enable = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
Color borderColor = Colors.transparent;
|
||||||
|
double borderWidth = 0;
|
||||||
|
BorderStyle borderStyle = BorderStyle.solid;
|
||||||
|
|
||||||
|
AppButton border(Color color, double width, {BorderStyle? style}) {
|
||||||
|
borderColor = color;
|
||||||
|
borderStyle = style ?? BorderStyle.solid;
|
||||||
|
borderWidth = width;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class AppButtonState extends State<AppButton> {
|
||||||
|
bool enable = true;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
var disableColor =
|
||||||
|
widget.color == null ? accentColor : widget.color!.withOpacity(0.2);
|
||||||
|
|
||||||
|
// if(widget.bold) text.bold();
|
||||||
|
// if(widget.fontSize != null) text.customSize(widget.fontSize);
|
||||||
|
|
||||||
|
return Container(
|
||||||
|
height: widget.height ?? 60,
|
||||||
|
margin: widget.margin,
|
||||||
|
child: MaterialButton(
|
||||||
|
minWidth: widget.minWidth ?? 10,
|
||||||
|
elevation: widget.elevation,
|
||||||
|
onPressed: widget.onClick,
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.circular(widget.cornerRadius),
|
||||||
|
side: BorderSide(
|
||||||
|
style: widget.borderStyle,
|
||||||
|
color: widget.borderColor,
|
||||||
|
width: widget.borderWidth)),
|
||||||
|
disabledColor: disableColor,
|
||||||
|
color: widget.color ?? accentColor,
|
||||||
|
child: Text(
|
||||||
|
widget.text ?? "",
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue