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.
doctor_app_flutter/lib/widgets/shared/app_drawer_widget.dart

130 lines
4.3 KiB
Dart

import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../config/shared_pref_kay.dart';
import '../../config/size_config.dart';
import '../../providers/schedule_provider.dart';
import '../../routes.dart';
import '../../screens/doctor/my_schedule_screen.dart';
import '../../util/dr_app_shared_pref.dart';
import '../../widgets/shared/drawer_item_widget.dart';
import '../../widgets/shared/rounded_container_widget.dart';
import 'app_texts_widget.dart';
import 'package:doctor_app_flutter/models/doctor_profile_model.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
// OWNER : Ibrahim albitar
// DATE : 06-04-2020
// DESCRIPTION : Custom App Drawer for app.
class AppDrawer extends StatefulWidget {
@override
_AppDrawerState createState() => _AppDrawerState();
}
class _AppDrawerState extends State<AppDrawer> {
bool _isInit = true;
DoctorProfileModel doctorProfile;
@override
void didChangeDependencies() {
super.didChangeDependencies();
// if (_isInit) {
getDocProfile();// TODO: Refactor this code to prevent errors in the cosole.
// }
_isInit = false;
}
getDocProfile() async {
Map profile = await sharedPref.getObj(DOCTOR_PROFILE);
// doctorProfile = DoctorProfileModel.fromJson(profile);
setState(() {
doctorProfile = DoctorProfileModel.fromJson(profile);
});
String token = await sharedPref.getString(TOKEN);
}
@override
Widget build(BuildContext context) {
// var x = getDocProfile();
return RoundedContainer(
child: Container(
margin: EdgeInsets.only(top: SizeConfig.heightMultiplier * 9),
child: Drawer(
child: ListView(padding: EdgeInsets.zero, children: <Widget>[
Container(
height: SizeConfig.heightMultiplier * 30,
child: InkWell(
child: DrawerHeader(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
CircleAvatar(
radius: SizeConfig.imageSizeMultiplier * 12,
backgroundImage:
NetworkImage(doctorProfile.doctorImageURL),
backgroundColor: Colors.transparent,
),
Padding(
padding: EdgeInsets.only(top: 10),
child: AppText(
doctorProfile.doctorName,
fontWeight: FontWeight.bold,
color: Colors.white,
fontSize: SizeConfig.textMultiplier * 2,
)),
AppText("Director of medical records",//TODO: Make The Dr Title Dynamic and check overflow issue.
fontWeight: FontWeight.normal, color: Colors.white)
],
),
),
onTap: () {
//Navigator.of(context).pushNamed(PROFILE);
Navigator.of(context).pushNamed(PROFILE, arguments: {'title':doctorProfile.doctorName,
"doctorProfileall": doctorProfile
});
},
),
),
InkWell(
child: DrawerItem("Settings", Icons.settings),
onTap: () {
Navigator.pop(context);
Navigator.of(context).pushNamed(SETTINGS);
},
),
InkWell(
child: DrawerItem("QR Reader", Icons.search),
onTap: () {
Navigator.pop(context);
Navigator.of(context).pushNamed(QR_READER);
},
),
InkWell(
child: DrawerItem("lOGOUT", Icons.exit_to_app),
onTap: () async {
await Helpers.clearSharedPref();
Navigator.pop(context);
Navigator.of(context).pushNamed(LOGIN);
},
),
])),
),
width: SizeConfig.realScreenWidth * 0.55,
margin: 0,
customCornerRaduis: true,
topRight: 30,
bottomRight: 30,
backgroundColor: Color(0xff58434F),
);
}
drawerNavigator(context, routeName) {
Navigator.of(context).pushNamed(routeName);
}
}