Merge branch 'elham' into 'master'

add curve background to all screen and patient page as a first step

See merge request Cloud_Solution/doctor_app_flutter!9
merge-requests/10/merge
Elham 6 years ago
commit 1c5db0f4d3

@ -1,7 +1,7 @@
{
"commentBox.styles": {
"defaultStyle": {
"commentStartToken": "/* \n *@author: Elham Rababah \n *@Date:13/4/1993 \n *@param: \n *@return:\n *@desc: ",
"commentStartToken": "/* \n *@author: Elham Rababah \n *@Date:13/4/2020 \n *@param: \n *@return:\n *@desc: ",
"commentEndToken": "\n */",
"leftEdgeToken": " * ",
"rightEdgeToken": "",

@ -9,7 +9,7 @@ import './screens/dashboard_screen.dart';
import './screens/medicine/medicine_search_screen.dart';
import './screens/my_schedule_screen.dart';
import './screens/patients/patient_search_screen.dart';
import './screens/patients/patients_list_screen.dart';
import './screens/patients/patients_screen.dart';
import './screens/settings/settings_screen.dart';
const String INIT_ROUTE = LOGIN;
@ -32,7 +32,7 @@ var routes = {
INIT_ROUTE: (_) => Loginsreen(),
MY_SCHEDULE: (_) => MyScheduleScreen(),
PATIENT_SEARCH: (_) => PatientSearchScreen(),
PATIENTS: (_) => PatientsListScreen(),
PATIENTS: (_) => PatientsScreen(),
QR_READER: (_) => QrReaderScreen(),
BLOOD_BANK: (_) => BloodBankScreen(),
DOCTOR_REPLY: (_) => DoctorReplyScreen(),

@ -22,13 +22,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
return AppScaffold(
appBarTitle:'Home',
body: Container(
decoration: new BoxDecoration(
gradient: LinearGradient(
colors: [Colors.red[100], Colors.white],
begin: Alignment.topLeft,
end: Alignment.bottomRight,
),
),
child: Column(
children: <Widget>[
Expanded(

@ -1,9 +1,65 @@
import 'package:flutter/material.dart';
import '../config/size_config.dart';
import '../widgets/shared/app_scaffold_widget.dart';
import '../widgets/shared/card_with_bg_widget.dart';
class MyScheduleScreen extends StatelessWidget {
List<String> litems = [
"1",
"2",
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("My Schedule"),),
return AppScaffold(
// pageOnly: false,
appBarTitle: 'My Schdule',
body: Container(
padding: EdgeInsetsDirectional.fromSTEB(30, 0, 30, 0),
child: ListView(children: <Widget>[
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
SizedBox(
height: 20,
),
Text('My Schedule', style: textStyle(2.5, FontWeight.w700)),
scheduleListByDate('Today, 7 April '),
scheduleListByDate('Wednesday, 8 April '),
],
),
],
),
]),
));
}
Column scheduleListByDate(date) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
SizedBox(
height: 10,
),
Text(date, style: textStyle(2.5)),
Container(
child: Column(
children: litems.map((item) {
return CardWithBgWidget(line1Text: 'ER new development ideas meeting',line2Text:'09:00 AM - 10:50 AM',line3Text: 'Cloud Solution',icon: Icons.add_location, heightPercentage: 0.20, widthPercentage: 0.80,);
}).toList(),
),
),
],
);
}
}
TextStyle textStyle(size, [FontWeight weight]) {
return TextStyle(
fontSize: size * SizeConfig.textMultiplier, fontWeight: weight);
}
}

@ -0,0 +1,56 @@
import 'package:flutter/material.dart';
import '../../widgets/shared/app_scaffold_widget.dart';
import '../../widgets/shared/card_with_bg_widget.dart';
class PatientsScreen extends StatelessWidget {
List<String> litems = [
"1",
"1",
"1",
];
@override
Widget build(BuildContext context) {
return AppScaffold(
appBarTitle: 'Patients',
body: Container(
child: Column(
children: litems.map((item) {
return CardWithBgWidget(
line1Text: 'Fahad AlSlehm - 324599',
line2Text: '12/04/2020 - 02:00 PM',
// line3Text: '',
heightPercentage: 0.15,
widthPercentage: 0.80);
}).toList(),
),
),
);
}
}
class CustomShapeClipper extends CustomClipper<Path> {
@override
Path getClip(Size size) {
final Path path = Path();
path.lineTo(0.0, size.height);
var firstEndPoint = Offset(size.width * .5, size.height / 2);
var firstControlpoint = Offset(size.width * 0.25, size.height * 0.95 + 30);
path.quadraticBezierTo(firstControlpoint.dx, firstControlpoint.dy,
firstEndPoint.dx, firstEndPoint.dy);
var secondEndPoint = Offset(size.width, size.height * 0.10);
var secondControlPoint = Offset(size.width * .75, size.height * .10 - 20);
path.quadraticBezierTo(secondControlPoint.dx, secondControlPoint.dy,
secondEndPoint.dx, secondEndPoint.dy);
path.lineTo(size.width, 0.0);
path.close();
return path;
}
@override
bool shouldReclip(CustomClipper oldClipper) => true;
}

@ -1,70 +1,104 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/screens/patients/patients_screen.dart';
import 'package:hexcolor/hexcolor.dart';
import '../../presentation/doctor_app_icons.dart';
import '../../widgets/shared/app_drawer_widget.dart';
import 'package:flutter/material.dart';
class AppScaffold extends StatelessWidget {
AppScaffold(
{this.pageOnly,
this.appBarTitle,
this.showAppBar,
this.showBottomBar,
this.showAppDrawer,
this.body});
bool pageOnly = false;
// bool showAll =
bool showAppBar = true;
bool showAppDrawer = true;
bool showBottomBar = true;
String appBarTitle;
bool showbg = true;
bool showCurve = true;
String appBarTitle = '';
Widget body;
AppScaffold(
{this.pageOnly,
this.appBarTitle,
this.showAppBar,
this.showBottomBar,
this.showAppDrawer,
this.body,
this.showbg,
this.showCurve});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: (pageOnly == true || showAppBar == false)?null:AppBar(
elevation: 0,
backgroundColor: Colors.red[100],
textTheme: TextTheme(
title: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)),
title: Text(appBarTitle),
leading: Builder(builder: (BuildContext context) {
return new GestureDetector(
onTap: () {
Scaffold.of(context).openDrawer();
},
child: IconButton(
icon: Icon(Icons.menu),
color: Colors.black,
onPressed: () => Scaffold.of(context).openDrawer(),
),
);
}),
centerTitle: true,
actions: <Widget>[
IconButton(icon: Icon(Icons.person), onPressed: null)
],
),
drawer: (pageOnly == true || showAppDrawer == false)?null:Theme(
data: Theme.of(context).copyWith(
canvasColor: Colors.transparent,
),
child: SafeArea(child: AppDrawer()),
),
// ,
bottomNavigationBar: (pageOnly == true || showBottomBar == false)?null: BottomNavigationBar(items: [
BottomNavigationBarItem(
icon: Icon(DoctorApp.home_icon),
title: Text('Home'),
backgroundColor: Colors.red,
activeIcon: Icon(Icons.home)),
BottomNavigationBarItem(
icon: new Icon(Icons.mail),
title: new Text('Messages'),
),
BottomNavigationBarItem(icon: Icon(Icons.apps), title: Text('Menu'))
]),
body: body,
);
backgroundColor:
(pageOnly == true || showbg == false) ? null : Hexcolor('#FCF7F7'),
appBar: (pageOnly == true || showAppBar == false)
? null
: AppBar(
elevation: 0,
backgroundColor: Hexcolor('#FFDDD9'),
textTheme: TextTheme(
title: TextStyle(
color: Colors.black, fontWeight: FontWeight.bold)),
title: Text(appBarTitle),
leading: Builder(builder: (BuildContext context) {
return new GestureDetector(
onTap: () {
Scaffold.of(context).openDrawer();
},
child: IconButton(
icon: Icon(Icons.menu),
color: Colors.black,
onPressed: () => Scaffold.of(context).openDrawer(),
),
);
}),
centerTitle: true,
actions: <Widget>[
IconButton(icon: Icon(Icons.person), onPressed: null)
],
),
drawer: (pageOnly == true || showAppDrawer == false)
? null
: Theme(
data: Theme.of(context).copyWith(
canvasColor: Colors.transparent,
),
child: SafeArea(child: AppDrawer()),
),
// ,
bottomNavigationBar: (pageOnly == true || showBottomBar == false)
? null
: BottomNavigationBar(items: [
BottomNavigationBarItem(
icon: Icon(DoctorApp.home_icon),
title: Text('Home'),
backgroundColor: Colors.red,
activeIcon: Icon(Icons.home)),
BottomNavigationBarItem(
icon: new Icon(Icons.mail),
title: new Text('Messages'),
),
BottomNavigationBarItem(
icon: Icon(Icons.apps), title: Text('Menu'))
]),
body: (pageOnly == true || showCurve == false)
? body
: Stack(
children: <Widget>[
ClipPath(
clipper: CustomShapeClipper(),
child: Container(
height: SizeConfig.realScreenHeight * 0.40,
decoration:
BoxDecoration(color: Hexcolor('#FFDDD9')))),
Positioned(
// key: ,
// top: SizeConfig.realScreenHeight * 0.10,
child: body)
],
));
}
}

@ -0,0 +1,82 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
class CardWithBgWidget extends StatelessWidget {
String line1Text;
String line2Text;
String line3Text;
IconData icon;
double heightPercentage;
double widthPercentage;
CardWithBgWidget(
{this.line1Text = '',
this.line2Text = '',
this.line3Text = '',
this.icon,
this.heightPercentage,
this.widthPercentage});
@override
Widget build(BuildContext context) {
return Stack(
children: <Widget>[
RoundedContainer(
Container(
height: SizeConfig.screenHeight * heightPercentage,
width: SizeConfig.screenWidth * widthPercentage,
),
raduis: 10,
backgroundColor: Hexcolor('#58434F'),
showBorder: true,
borderColor: Hexcolor('#707070'),
borderWidth: 0.5,
),
Positioned(
left: 10,
child: RoundedContainer(
Container(
padding: const EdgeInsets.all(15.0),
height: SizeConfig.screenHeight * heightPercentage,
width: SizeConfig.screenWidth * widthPercentage,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(line1Text, style: textStyle(2.5)),
SizedBox(
height: 8,
),
Text(line2Text, style: textStyle(2.5)),
SizedBox(
height: 8,
),
Row(
children: <Widget>[
Icon(icon),
Text(line3Text, style: textStyle(2.5))
],
)
],
),
),
elevation: 0,
// raduis: 0,
showBorder: true,
borderColor: Hexcolor('#707070'),
customCornerRaduis: true,
bottomLeft: 0,
topLeft: 0,
bottomRight: 10,
topRight: 10,
borderWidth: 0.5),
),
],
);
}
TextStyle textStyle(size, [FontWeight weight]) {
return TextStyle(
fontSize: size * SizeConfig.textMultiplier, fontWeight: weight);
}
}

@ -0,0 +1,26 @@
import 'package:flutter/material.dart';
class CustomShapeClipper extends CustomClipper<Path> {
@override
Path getClip(Size size) {
final Path path = Path();
path.lineTo(0.0, size.height);
var firstEndPoint = Offset(size.width * .5, size.height / 2);
var firstControlpoint = Offset(size.width * 0.25, size.height * 0.95 + 30);
path.quadraticBezierTo(firstControlpoint.dx, firstControlpoint.dy,
firstEndPoint.dx, firstEndPoint.dy);
var secondEndPoint = Offset(size.width, size.height * 0.10);
var secondControlPoint = Offset(size.width * .75, size.height * .10 - 20);
path.quadraticBezierTo(secondControlPoint.dx, secondControlPoint.dy,
secondEndPoint.dx, secondEndPoint.dy);
path.lineTo(size.width, 0.0);
path.close();
return path;
}
@override
bool shouldReclip(CustomClipper oldClipper) => true;
}

@ -17,6 +17,7 @@ class RoundedContainer extends StatefulWidget {
final double topRight;
final double bottomLeft;
final Widget widget;
final double borderWidth;
RoundedContainer(
this.widget,
@ -31,6 +32,7 @@ class RoundedContainer extends StatefulWidget {
this.topRight = 0,
this.bottomRight = 0,
this.bottomLeft = 0,
this.borderWidth =1
});
@override
@ -41,11 +43,13 @@ class _RoundedContainerState extends State<RoundedContainer> {
@override
Widget build(BuildContext context) {
return Container(
height: null,
width: null,
margin: EdgeInsets.all(widget.margin),
decoration: widget.showBorder == true
? BoxDecoration(
color: Theme.of(context).primaryColor,
border: Border.all(color: Colors.red, width: 1),
border: Border.all(color: widget.borderColor, width: widget.borderWidth),
borderRadius: widget.customCornerRaduis
? BorderRadius.only(
topLeft: Radius.circular(widget.topLeft),

Loading…
Cancel
Save