feedback ui redesigned.

merge-update-with-lab-changes
Sikander Saleem 5 years ago
parent 1b7b7b6334
commit cd85ad4f8a

@ -51,7 +51,7 @@ class _HospitalsLiveChatPageState extends State<HospitalsLiveChatPage> {
Text( Text(
TranslationBase.of(context).instructions, TranslationBase.of(context).instructions,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.56, height: 21 / 14), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16),
), ),
SizedBox(height: 20), SizedBox(height: 20),
Text( Text(

@ -38,7 +38,7 @@ class PharmaciesLiveChatPage extends StatelessWidget {
Text( Text(
TranslationBase.of(context).instructions, TranslationBase.of(context).instructions,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.56, height: 21 / 14), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16),
), ),
], ],
), ),

@ -195,178 +195,5 @@ class _HospitalsPageState extends State<HospitalsPage> {
], ],
), ),
); );
AppScaffold(
isShowDecPage: false,
body: SingleChildScrollView(
child: Container(
// margin: EdgeInsets.only(left: 15,right: 15,top: 70),
margin: EdgeInsets.only(left: 15, right: 15, top: 70),
child: Column(
children: [
...List.generate(
widget.findusHospitalModelList.length,
(index) => Container(
decoration: BoxDecoration(
shape: BoxShape.rectangle,
border: Border.all(color: Colors.white, width: 0.5),
borderRadius: BorderRadius.all(Radius.circular(5)),
color: Colors.white,
),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Expanded(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
InkWell(
onTap: () {
showDialog(
context: context,
builder: (_) => AssetGiffyDialog(
title: Text(
widget.findusHospitalModelList[index].locationName,
style: TextStyle(fontSize: 22.0, fontWeight: FontWeight.w600),
),
image: Image.network(
widget.findusHospitalModelList[index].projectImageURL.toString(),
fit: BoxFit.cover,
),
buttonCancelText: Text('cancel'),
buttonCancelColor: Colors.grey,
onlyCancelButton: true,
));
},
child: Container(width: 70, height: 70, child: Image.network(widget.findusHospitalModelList[index].projectImageURL.toString())),
),
Expanded(
flex: 4,
child: Container(
margin: EdgeInsets.only(left: 5, right: 5, top: 10, bottom: 1),
child: Texts(
'${widget.findusHospitalModelList[index].locationName}',
textAlign: TextAlign.start,
))), //model.cOCItemList[index].cOCTitl
Expanded(
flex: 2,
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
IconButton(
icon: Icon(
Icons.location_on,
color: Theme.of(context).primaryColor,
size: 35,
),
// icon: new Image.asset(
// 'assets/images/new-design/navigate.png'),
tooltip: '',
onPressed: () {
setState(() {
MapsLauncher.launchCoordinates(double.parse(widget.findusHospitalModelList[index].latitude),
double.parse(widget.findusHospitalModelList[index].longitude), widget.findusHospitalModelList[index].locationName);
});
},
),
IconButton(
icon: Icon(
Icons.phone,
color: Theme.of(context).primaryColor,
size: 35,
),
// icon: new Image.asset(
// 'assets/images/new-design/call.png'),
tooltip: '',
onPressed: () {
setState(() {
// _volume += 10;
launch("tel://" + widget.findusHospitalModelList[index].phoneNumber);
});
},
),
],
),
),
],
),
),
],
),
// Texts('${model.FindusHospitalModelList[index].locationName}'),
Divider(
height: 4.5,
color: Colors.grey[500],
)
],
),
),
)),
SizedBox(
height: 8,
),
Container(
width: double.infinity,
height: 100,
color: Colors.white,
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
IconButton(
icon: new Image.asset('assets/images/new-design/youtube.png'),
iconSize: 70,
tooltip: 'Youtube',
onPressed: () {
setState(() {
launch("https://www.youtube.com/c/DrsulaimanAlhabibHospitals");
});
},
),
IconButton(
icon: new Image.asset('assets/images/new-design/linkedin.png'),
tooltip: 'LinkedIn',
iconSize: 70,
onPressed: () {
setState(() {
launch("https://www.linkedin.com/company/drsulaiman-alhabib-medical-group");
});
},
),
IconButton(
icon: new Image.asset('assets/images/new-design/twitter.png'),
tooltip: 'Twitter',
iconSize: 70,
onPressed: () {
setState(() {
launch("https://twitter.com/HMG");
});
},
),
IconButton(
icon: new Image.asset('assets/images/new-design/facebook.png'),
tooltip: 'facebook',
iconSize: 70,
onPressed: () {
setState(() {
launch("https://www.facebook.com/DrSulaimanAlHabib?ref=tn_tnmn");
});
},
),
],
),
),
],
),
),
),
);
} }
} }

@ -38,7 +38,12 @@ class CardCommonContact extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[ children: <Widget>[
Image.asset(this.image, width: 42.0, height: 42.0), Image.asset(
this.image,
width: 42.0,
height: 42.0,
color: Color(0xff2E303A),
),
Text( Text(
text + "${subText.isEmpty ? "" : "\n$subText"}", text + "${subText.isEmpty ? "" : "\n$subText"}",
style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 20 / 16), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 20 / 16),

@ -3,6 +3,7 @@ import 'dart:ui';
import 'package:diplomaticquarterapp/core/viewModels/feedback/feedback_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/feedback/feedback_view_model.dart';
import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart'; import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart';
import 'package:diplomaticquarterapp/pages/feedback/send_feedback_page.dart'; import 'package:diplomaticquarterapp/pages/feedback/send_feedback_page.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
@ -14,14 +15,13 @@ import 'status_feedback_page.dart';
class FeedbackHomePage extends StatefulWidget { class FeedbackHomePage extends StatefulWidget {
final AppoitmentAllHistoryResultList appointment; final AppoitmentAllHistoryResultList appointment;
final MessageType messageType; final MessageType messageType;
const FeedbackHomePage({Key key, this.appointment, this.messageType= MessageType.NON}) : super(key: key); const FeedbackHomePage({Key key, this.appointment, this.messageType = MessageType.NON}) : super(key: key);
@override @override
_FeedbackHomePageState createState() => _FeedbackHomePageState(); _FeedbackHomePageState createState() => _FeedbackHomePageState();
} }
class _FeedbackHomePageState extends State<FeedbackHomePage> class _FeedbackHomePageState extends State<FeedbackHomePage> with SingleTickerProviderStateMixin {
with SingleTickerProviderStateMixin {
TabController _tabController; TabController _tabController;
@override @override
@ -43,79 +43,44 @@ class _FeedbackHomePageState extends State<FeedbackHomePage>
isBottomBar: false, isBottomBar: false,
isShowDecPage: false, isShowDecPage: false,
appBarTitle: TranslationBase.of(context).feedbackTitle, appBarTitle: TranslationBase.of(context).feedbackTitle,
body: Scaffold( showNewAppBar: true,
extendBodyBehindAppBar: true, showNewAppBarTitle: true,
appBar: PreferredSize( backgroundColor: CustomColors.appBackgroudGrey2Color,
preferredSize: Size.fromHeight(65.0), body: Column(
child: Stack( children: <Widget>[
children: <Widget>[ TabBar(
Positioned( controller: _tabController,
bottom: 1, indicatorWeight: 3.0,
left: 0, indicatorSize: TabBarIndicatorSize.tab,
right: 0, labelColor: Color(0xff2B353E),
child: BackdropFilter( unselectedLabelColor: Color(0xff575757),
filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10), labelPadding: EdgeInsets.only(top: 15, bottom: 13, left: 20, right: 20),
child: Container( labelStyle: TextStyle(
color: Theme.of(context) fontSize: 16,
.scaffoldBackgroundColor fontWeight: FontWeight.w600,
.withOpacity(0.8), letterSpacing: -0.48,
height: 70.0, ),
), unselectedLabelStyle: TextStyle(
), fontSize: 16,
), fontWeight: FontWeight.w600,
Center( letterSpacing: -0.48,
child: Container( ),
height: 60.0, tabs: [Text(TranslationBase.of(context).send), Text(TranslationBase.of(context).status)],
margin: EdgeInsets.only(top: 10.0),
width: MediaQuery.of(context).size.width * 0.9,
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
color: Theme.of(context).dividerColor, width: 0.7),
),
color: Colors.white),
child: Center(
child: TabBar(
isScrollable: true,
controller: _tabController,
indicatorWeight: 5.0,
indicatorSize: TabBarIndicatorSize.tab,
labelColor: Theme.of(context).primaryColor,
labelPadding:
EdgeInsets.only(top: 4.0, left: 18.0, right: 18.0),
unselectedLabelColor: Colors.grey[800],
tabs: [
Container(
width: MediaQuery.of(context).size.width * 0.30,
child: Center(
child: Texts(TranslationBase.of(context).send),
),
),
Container(
width: MediaQuery.of(context).size.width * 0.30,
child: Center(
child: Texts(TranslationBase.of(context).status),
),
),
],
),
),
),
),
],
), ),
), Expanded(
body: Column( child: TabBarView(
children: <Widget>[ physics: BouncingScrollPhysics(),
Expanded( controller: _tabController,
child: TabBarView( children: <Widget>[
physics: BouncingScrollPhysics(), SendFeedbackPage(
controller: _tabController, appointment: widget.appointment,
children: <Widget>[SendFeedbackPage(appointment: widget.appointment,messageType: widget.messageType,), StatusFeedbackPage()], messageType: widget.messageType,
), ),
) StatusFeedbackPage()
], ],
), ),
)
],
), ),
); );
} }

@ -12,6 +12,7 @@ import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/avatar/large_avatar.dart'; import 'package:diplomaticquarterapp/widgets/avatar/large_avatar.dart';
import 'package:diplomaticquarterapp/widgets/bottom_options/BottomSheet.dart'; import 'package:diplomaticquarterapp/widgets/bottom_options/BottomSheet.dart';
import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/input/text_field.dart'; import 'package:diplomaticquarterapp/widgets/input/text_field.dart';
@ -102,447 +103,447 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
builder: (_, model, widget) => AppScaffold( builder: (_, model, widget) => AppScaffold(
baseViewModel: model, baseViewModel: model,
isShowDecPage: false, isShowDecPage: false,
body: Container( body: Column(
height: MediaQuery.of(context).size.height * 0.8, children: [
child: SingleChildScrollView( Expanded(
child: Form( child: SingleChildScrollView(
key: formKey, physics: BouncingScrollPhysics(),
child: Column( padding: EdgeInsets.only(top: 16, bottom: 16, right: 21, left: 21),
crossAxisAlignment: CrossAxisAlignment.start, child: Form(
children: <Widget>[ key: formKey,
SizedBox( child: Column(
height: 65, crossAxisAlignment: CrossAxisAlignment.start,
), children: <Widget>[
Container( Text(
margin: EdgeInsets.only(left: 20, right: 20, top: 8), TranslationBase.of(context).likeToHear,
child: Texts( textAlign: TextAlign.center,
TranslationBase.of(context).likeToHear, style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16),
textAlign: TextAlign.center,
),
),
InkWell(
onTap: () {
confirmBox(model);
},
child: Container(
margin: EdgeInsets.only(left: 10, right: 10, top: 15),
height: 50,
decoration: BoxDecoration(
border: Border.all(color: Colors.grey),
borderRadius: BorderRadius.circular(7),
color: Colors.white,
shape: BoxShape.rectangle,
), ),
child: Row( SizedBox(height: 21),
mainAxisAlignment: MainAxisAlignment.spaceBetween, InkWell(
children: <Widget>[ onTap: () {
Container( confirmBox(model);
child: Texts( },
getSelected(context), child: Container(
variant: 'bodyText', padding: EdgeInsets.only(left: 16, right: 16, bottom: 15, top: 15),
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
color: Colors.white,
border: Border.all(
color: Color(0xffefefef),
width: 1,
), ),
margin: EdgeInsets.only(left: 10, right: 10),
), ),
Icon( child: Row(
Icons.arrow_drop_down, mainAxisAlignment: MainAxisAlignment.spaceBetween,
size: 22, children: <Widget>[
color: Colors.grey, Text(
) getSelected(context),
], style: TextStyle(
), fontSize: 16,
), fontWeight: FontWeight.w600,
), letterSpacing: -0.48,
if (appointHistory != null && color: Color(0xff2B353E),
messageType == MessageType.ComplaintOnAnAppointment)
InkWell(
onTap: () {
setState(() {
isShowListAppointHistory = true;
});
},
child: Container(
margin: EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(8)
),
child: Row(
children: <Widget>[
Container(
width: projectViewModel.isArabic ? 27 : 20,
height: projectViewModel.isArabic ? 105 : 90,
decoration: BoxDecoration(
//Colors.red[900] Color(0xff404545)
color: appointHistory.isLiveCareAppointment
? Color(0xff404545)
: !appointHistory.isInOutPatient
? Colors.red[900]
: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only(
topLeft: projectViewModel.isArabic
? Radius.circular(0)
: Radius.circular(8),
bottomLeft: projectViewModel.isArabic
? Radius.circular(0)
: Radius.circular(8),
topRight: projectViewModel.isArabic
? Radius.circular(8)
: Radius.circular(0),
bottomRight: projectViewModel.isArabic
? Radius.circular(8)
: Radius.circular(0),
), ),
), ),
child: RotatedBox( Icon(
quarterTurns: 3, Icons.keyboard_arrow_down,
child: Center( size: 22,
child: Text( color: Colors.grey,
appointHistory.isLiveCareAppointment )
? TranslationBase.of(context).liveCare.toUpperCase() ],
: !appointHistory.isInOutPatient ),
? TranslationBase.of(context) ),
.inPatient ),
.toUpperCase() SizedBox(height: 12),
: TranslationBase.of(context) if (appointHistory != null && messageType == MessageType.ComplaintOnAnAppointment)
.outpatient InkWell(
.toUpperCase(), onTap: () {
style: TextStyle(color: Colors.white,fontSize: 12), setState(() {
isShowListAppointHistory = true;
});
},
child: Container(
// margin: EdgeInsets.all(8.0),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(8)),
child: Row(
children: <Widget>[
Container(
width: projectViewModel.isArabic ? 27 : 20,
height: projectViewModel.isArabic ? 105 : 90,
decoration: BoxDecoration(
//Colors.red[900] Color(0xff404545)
color: appointHistory.isLiveCareAppointment
? Color(0xff404545)
: !appointHistory.isInOutPatient
? Colors.red[900]
: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only(
topLeft: projectViewModel.isArabic ? Radius.circular(0) : Radius.circular(8),
bottomLeft: projectViewModel.isArabic ? Radius.circular(0) : Radius.circular(8),
topRight: projectViewModel.isArabic ? Radius.circular(8) : Radius.circular(0),
bottomRight: projectViewModel.isArabic ? Radius.circular(8) : Radius.circular(0),
), ),
)), ),
), child: RotatedBox(
Expanded( quarterTurns: 3,
flex: 4, child: Center(
child: Column( child: Text(
crossAxisAlignment: CrossAxisAlignment.start, appointHistory.isLiveCareAppointment
children: <Widget>[ ? TranslationBase.of(context).liveCare.toUpperCase()
Padding( : !appointHistory.isInOutPatient
padding: const EdgeInsets.all(10.0), ? TranslationBase.of(context).inPatient.toUpperCase()
child: Row( : TranslationBase.of(context).outpatient.toUpperCase(),
children: <Widget>[ style: TextStyle(color: Colors.white, fontSize: 12),
Expanded(
flex: 1,
child: LargeAvatar(
name: appointHistory.doctorNameObj,
url: appointHistory.doctorImageURL,
),
), ),
Expanded( )),
flex: 4, ),
child: Container( Expanded(
margin: EdgeInsets.all(10), flex: 4,
child: Column( child: Column(
crossAxisAlignment: crossAxisAlignment: CrossAxisAlignment.start,
CrossAxisAlignment.start, children: <Widget>[
children: <Widget>[ Padding(
Texts( padding: const EdgeInsets.all(10.0),
appointHistory.doctorNameObj, child: Row(
bold: true, children: <Widget>[
), Expanded(
Texts( flex: 1,
DateUtil child: LargeAvatar(
.getMonthDayYearDateFormatted(DateUtil.convertStringToDate(appointHistory.appointmentDate)), name: appointHistory.doctorNameObj,
variant: 'caption3', url: appointHistory.doctorImageURL,
),
),
Expanded(
flex: 4,
child: Container(
margin: EdgeInsets.all(10),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Texts(
appointHistory.doctorNameObj,
bold: true,
),
Texts(
DateUtil.getMonthDayYearDateFormatted(DateUtil.convertStringToDate(appointHistory.appointmentDate)),
variant: 'caption3',
),
StarRating(totalAverage: appointHistory.doctorRate.toDouble(), forceStars: true),
],
), ),
StarRating( ),
totalAverage: appointHistory
.doctorRate
.toDouble(),
forceStars: true),
],
), ),
), ],
), ),
], ),
],
),
),
Expanded(
flex: 1,
child: Center(
child: Icon(
Icons.arrow_forward_ios,
size: 15,
), ),
), ),
], )
), ],
), ),
Expanded( ),
flex: 1,
child: Center(
child: Icon(
Icons.arrow_forward_ios,
size: 15,
),
),
)
],
), ),
), if (messageType == MessageType.ComplaintOnAnAppointment && model.appointHistoryList.length != 0 && isShowListAppointHistory)
), Container(
if (messageType == MessageType.ComplaintOnAnAppointment && height: model.appointHistoryList.length > 2 ? MediaQuery.of(context).size.height * 0.25 : MediaQuery.of(context).size.height * 0.15,
model.appointHistoryList.length != 0 && child: ListView.builder(
isShowListAppointHistory) itemCount: model.appointHistoryList.length,
Container( itemBuilder: (context, index) => InkWell(
height: model.appointHistoryList.length > 2 onTap: () {
? MediaQuery.of(context).size.height * 0.25 setState(() {
: MediaQuery.of(context).size.height * 0.15, appointHistory = model.appointHistoryList[index];
child: ListView.builder( isShowListAppointHistory = false;
itemCount: model.appointHistoryList.length, });
itemBuilder: (context, index) => InkWell( },
onTap: () { child: Container(
setState(() { margin: EdgeInsets.only(left: 8, right: 8),
appointHistory = model.appointHistoryList[index]; color: Colors.white,
isShowListAppointHistory = false; child: Column(
});
},
child: Container(
margin: EdgeInsets.only(left: 8, right: 8),
color: Colors.white,
child: Column(
children: <Widget>[
Row(
children: <Widget>[ children: <Widget>[
Expanded( Row(
flex: 4, children: <Widget>[
child: Column( Expanded(
crossAxisAlignment: flex: 4,
CrossAxisAlignment.start, child: Column(
children: <Widget>[ crossAxisAlignment: CrossAxisAlignment.start,
Padding( children: <Widget>[
padding: const EdgeInsets.all(10.0), Padding(
child: Row( padding: const EdgeInsets.all(10.0),
children: <Widget>[ child: Row(
Expanded( children: <Widget>[
flex: 1, Expanded(
child: LargeAvatar( flex: 1,
name: model child: LargeAvatar(
.appointHistoryList[ name: model.appointHistoryList[index].doctorNameObj,
index] url: model.appointHistoryList[index].doctorImageURL,
.doctorNameObj, ),
url: model ),
.appointHistoryList[ Expanded(
index] flex: 4,
.doctorImageURL, child: Container(
), margin: EdgeInsets.all(10),
), child: Column(
Expanded( crossAxisAlignment: CrossAxisAlignment.start,
flex: 4, children: <Widget>[
child: Container( Texts(
margin: EdgeInsets.all(10), model.appointHistoryList[index].doctorNameObj,
child: Column( bold: true,
crossAxisAlignment: ),
CrossAxisAlignment Texts(
.start, DateUtil.getMonthDayYearDateFormatted(DateUtil.convertStringToDate(model.appointHistoryList[index].appointmentDate)),
children: <Widget>[ variant: 'caption3',
Texts( ),
model StarRating(totalAverage: model.appointHistoryList[index].doctorRate.toDouble(), forceStars: true),
.appointHistoryList[ ],
index]
.doctorNameObj,
bold: true,
),
Texts(
DateUtil.getMonthDayYearDateFormatted(DateUtil.convertStringToDate(model.appointHistoryList[index].appointmentDate)),
variant: 'caption3',
), ),
StarRating( ),
totalAverage: model
.appointHistoryList[
index]
.doctorRate
.toDouble(),
forceStars: true),
],
), ),
), ],
), ),
], ),
],
),
),
Expanded(
flex: 1,
child: Center(
child: Icon(
Icons.arrow_forward_ios,
size: 15,
), ),
), ),
], )
), ],
), ),
Expanded( SizedBox(
flex: 1, height: 5,
child: Center( ),
child: Icon( Divider(
Icons.arrow_forward_ios, height: 0.5,
size: 15, color: Colors.grey[400],
),
),
) )
], ],
), ),
SizedBox( ),
height: 5,
),
Divider(
height: 0.5,
color: Colors.grey[400],
)
],
), ),
), ),
), ),
), inputWidget(TranslationBase.of(context).subject, "xxxxxxxx", titleController),
), SizedBox(height: 12),
Container( inputWidget(TranslationBase.of(context).message, "xxxxxxxx", messageController, lines: 11, suffixTap: () {
margin: EdgeInsets.only(left: 10, right: 10, top: 15), openSpeechReco();
child: TextFields( }),
hintText: TranslationBase.of(context).subject, SizedBox(height: 12),
controller: titleController, InkWell(
fontSize: 13.5, onTap: () {
hintColor: Colors.black, ImageOptions.showImageOptions(context, (String image, File file) {
fontWeight: FontWeight.w600, setState(() {
onChanged: (v) { images.add(image);
setState(() {}); });
}, });
validator: (value) {
if (value.isEmpty)
return TranslationBase.of(context).emptySubject;
else
return null;
},
),
),
Container(
margin: EdgeInsets.only(left: 10, right: 10, top: 15),
child: TextFields(
hintText: TranslationBase.of(context).message,
fontSize: 13.5,
hintColor: Colors.black,
fontWeight: FontWeight.w600,
maxLines: 25,
minLines: 13,
controller: messageController,
suffixIcon: Icons.mic,
onSuffixTap: () {
openSpeechReco();
},
onChanged: (v) {
setState(() {});
}, },
validator: (value) { child: Container(
if (value.isEmpty) padding: EdgeInsets.only(left: 16, right: 16, bottom: 15, top: 15),
return TranslationBase.of(context).emptyMessage; alignment: Alignment.center,
else decoration: BoxDecoration(
return null; borderRadius: BorderRadius.circular(15),
}), color: Colors.white,
), border: Border.all(
InkWell( color: Color(0xffefefef),
onTap: () { width: 1,
ImageOptions.showImageOptions(context,
(String image, File file) {
setState(() {
images.add(image);
});
});
},
child: Container(
margin: EdgeInsets.only(left: 10, right: 10, top: 15),
height: 50,
decoration: BoxDecoration(
border: Border.all(color: Colors.grey),
borderRadius: BorderRadius.circular(7),
color: Colors.white,
shape: BoxShape.rectangle,
),
child: Center(
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Icon(Icons.attach_file),
Texts(
TranslationBase.of(context).selectAttachment,
variant: 'bodyText',
textAlign: TextAlign.center,
), ),
], ),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Icon(
Icons.attach_file,
color: Color(0xff2B353E),
),
Text(
TranslationBase.of(context).selectAttachment,
style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16),
),
],
),
), ),
), ),
), ...List.generate(
), images.length,
...List.generate( (index) => Container(
images.length, margin: EdgeInsets.all(10),
(index) => Container( padding: EdgeInsets.all(8.0),
margin: EdgeInsets.all(10), child: Row(
padding: EdgeInsets.all(8.0), mainAxisAlignment: MainAxisAlignment.spaceBetween,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Icon(FontAwesomeIcons.paperclip), Row(
SizedBox( crossAxisAlignment: CrossAxisAlignment.start,
width: 8, children: <Widget>[
), Icon(FontAwesomeIcons.paperclip),
Texts( SizedBox(
'image ${index + 1}.png', width: 8,
),
Texts(
'image ${index + 1}.png',
),
],
), ),
InkWell(
onTap: () {
setState(() {
images.remove(images[index]);
});
},
child: Icon(
FontAwesomeIcons.trashAlt,
color: Colors.red[300],
))
], ],
), ),
InkWell( )),
onTap: () { ],
setState(() {
images.remove(images[index]);
});
},
child: Icon(
FontAwesomeIcons.trashAlt,
color: Colors.red[300],
))
],
),
)),
SizedBox(
height: 100,
), ),
], ),
), ),
), ),
), Container(
color: Colors.white,
padding: EdgeInsets.only(top: 16, bottom: 16, right: 21, left: 21),
child: DefaultButton(
TranslationBase.of(context).send,
(titleController.text.toString().isEmpty || messageController.text.toString().isEmpty)
? null
: () {
final form = formKey.currentState;
if (form.validate()) {
GifLoaderDialogUtils.showMyDialog(context);
model
.sendCOCItem(
title: titleController.text,
attachment: images.length > 0 ? images[0] : "",
details: messageController.text,
cOCTypeName: getCOCName(),
appointHistory: messageType == MessageType.ComplaintOnAnAppointment ? appointHistory : null)
.then((value) {
if (value) {
setState(() {
titleController.text = "";
messageController.text = "";
images = [];
});
setMessageType(MessageType.NON);
GifLoaderDialogUtils.hideDialog(context);
AppToast.showSuccessToast(message: TranslationBase.of(context).yourFeedback);
} else {
AppToast.showErrorToast(message: model.error);
GifLoaderDialogUtils.hideDialog(context);
}
});
}
},
color: Color(0xffD02127),
textColor: (titleController.text.toString().isEmpty || messageController.text.toString().isEmpty) ? Color(0xff000000) : Colors.white,
disabledColor: Color(0xffEAEAEA),
),
),
],
), ),
bottomSheet: Container( ),
height: 80, );
width: double.infinity, }
padding: EdgeInsets.all(15.0),
child: Center( Widget inputWidget(String _labelText, String _hintText, TextEditingController _controller, {VoidCallback suffixTap, bool isEnable = true, bool hasSelection = false, int lines}) {
child: Container( return Container(
height: MediaQuery.of(context).size.height * 0.1, padding: EdgeInsets.only(left: 16, right: 16, bottom: 15, top: 15),
child: SecondaryButton( alignment: Alignment.center,
label: TranslationBase.of(context).send, decoration: BoxDecoration(
textColor: Colors.white, borderRadius: BorderRadius.circular(15),
disabled: (titleController.text.toString().isEmpty || color: Colors.white,
messageController.text.toString().isEmpty), border: Border.all(
onTap: () { color: Color(0xffefefef),
final form = formKey.currentState; width: 1,
if (form.validate()) { ),
GifLoaderDialogUtils.showMyDialog(context); ),
model child: InkWell(
.sendCOCItem( onTap: hasSelection ? () {} : null,
title: titleController.text, child: Row(
attachment: images.length > 0 ? images[0] : "", children: [
details: messageController.text, Expanded(
cOCTypeName: getCOCName(), child: Column(
appointHistory: messageType == mainAxisSize: MainAxisSize.min,
MessageType.ComplaintOnAnAppointment crossAxisAlignment: CrossAxisAlignment.start,
? appointHistory children: [
: null) Text(
.then((value) { _labelText,
if (value) { style: TextStyle(
setState(() { fontSize: 11,
titleController.text = ""; fontWeight: FontWeight.w600,
messageController.text = ""; color: Color(0xff2B353E),
images = []; letterSpacing: -0.44,
}); ),
setMessageType(MessageType.NON); ),
GifLoaderDialogUtils.hideDialog(context); TextField(
AppToast.showSuccessToast( enabled: isEnable,
message: TranslationBase.of(context).yourFeedback); scrollPadding: EdgeInsets.zero,
} else { keyboardType: TextInputType.number,
AppToast.showErrorToast(message: model.error); controller: _controller,
GifLoaderDialogUtils.hideDialog(context); maxLines: lines,
} onChanged: (value) => {setState(() {})},
}); style: TextStyle(
} fontSize: 14,
}, height: 21 / 14,
fontWeight: FontWeight.w400,
color: Color(0xff2B353E),
letterSpacing: -0.44,
),
decoration: InputDecoration(
isDense: true,
hintText: _hintText,
hintStyle: TextStyle(
fontSize: 14,
height: 21 / 14,
fontWeight: FontWeight.w400,
color: Color(0xff575757),
letterSpacing: -0.56,
),
suffixIconConstraints: BoxConstraints(minWidth: 50),
suffixIcon: suffixTap == null ? null : IconButton(icon: Icon(Icons.mic, color: Color(0xff2E303A)), onPressed: suffixTap),
// prefixIconConstraints: BoxConstraints(minWidth: 50),
// prefixIcon: suffix == null
// ? null
// : Text(
// "+" + suffix,
// style: TextStyle(
// fontSize: 14,
// height: 21 / 14,
// fontWeight: FontWeight.w500,
// color: Color(0xff2E303A),
// letterSpacing: -0.56,
// ),
// ),
contentPadding: EdgeInsets.zero,
border: InputBorder.none,
focusedBorder: InputBorder.none,
enabledBorder: InputBorder.none,
),
),
],
), ),
), ),
), if (hasSelection) Icon(Icons.keyboard_arrow_down_outlined),
],
), ),
), ),
); );
@ -595,10 +596,8 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
openSpeechReco() async { openSpeechReco() async {
new RoboSearch(context: context).showAlertDialog(context); new RoboSearch(context: context).showAlertDialog(context);
_currentLocaleId = _currentLocaleId = TranslationBase.of(AppGlobal.context).locale.languageCode;
TranslationBase.of(AppGlobal.context).locale.languageCode; bool available = await speech.initialize(onStatus: statusListener, onError: errorListener);
bool available = await speech.initialize(
onStatus: statusListener, onError: errorListener);
if (available) { if (available) {
speech.listen( speech.listen(
onResult: resultListener, onResult: resultListener,
@ -641,8 +640,7 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
} }
Future<void> initSpeechState() async { Future<void> initSpeechState() async {
bool hasSpeech = await speech.initialize( bool hasSpeech = await speech.initialize(onError: errorListener, onStatus: statusListener);
onError: errorListener, onStatus: statusListener);
print(hasSpeech); print(hasSpeech);
if (!mounted) return; if (!mounted) return;
} }
@ -652,9 +650,7 @@ class FeedbackTypeDialog extends StatefulWidget {
final Function(MessageType) onValueSelected; final Function(MessageType) onValueSelected;
final MessageType messageTypeDialog; final MessageType messageTypeDialog;
const FeedbackTypeDialog( const FeedbackTypeDialog({Key key, this.onValueSelected, this.messageTypeDialog = MessageType.NON}) : super(key: key);
{Key key, this.onValueSelected, this.messageTypeDialog = MessageType.NON})
: super(key: key);
@override @override
State createState() => new FeedbackTypeDialogState(); State createState() => new FeedbackTypeDialogState();
@ -699,14 +695,12 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
child: InkWell( child: InkWell(
onTap: () => setMessageDialogType(MessageType.NON), onTap: () => setMessageDialogType(MessageType.NON),
child: ListTile( child: ListTile(
title: title: Texts(TranslationBase.of(context).notClassified),
Texts(TranslationBase.of(context).notClassified),
leading: Radio( leading: Radio(
value: MessageType.NON, value: MessageType.NON,
groupValue: messageTypeDialog, groupValue: messageTypeDialog,
activeColor: Theme.of(context).primaryColor, activeColor: Theme.of(context).primaryColor,
onChanged: (MessageType value) => onChanged: (MessageType value) => setMessageDialogType(value),
setMessageDialogType(value),
), ),
), ),
), ),
@ -721,17 +715,14 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
Expanded( Expanded(
flex: 1, flex: 1,
child: InkWell( child: InkWell(
onTap: () => setMessageDialogType( onTap: () => setMessageDialogType(MessageType.ComplaintOnAnAppointment),
MessageType.ComplaintOnAnAppointment),
child: ListTile( child: ListTile(
title: title: Texts(TranslationBase.of(context).complainAppo),
Texts(TranslationBase.of(context).complainAppo),
leading: Radio( leading: Radio(
value: MessageType.ComplaintOnAnAppointment, value: MessageType.ComplaintOnAnAppointment,
groupValue: messageTypeDialog, groupValue: messageTypeDialog,
activeColor: Theme.of(context).primaryColor, activeColor: Theme.of(context).primaryColor,
onChanged: (MessageType value) => onChanged: (MessageType value) => setMessageDialogType(value),
setMessageDialogType(value),
), ),
), ),
), ),
@ -746,17 +737,14 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
Expanded( Expanded(
flex: 1, flex: 1,
child: InkWell( child: InkWell(
onTap: () => setMessageDialogType( onTap: () => setMessageDialogType(MessageType.ComplaintWithoutAppointment),
MessageType.ComplaintWithoutAppointment),
child: ListTile( child: ListTile(
title: Texts( title: Texts(TranslationBase.of(context).complainWithoutAppo),
TranslationBase.of(context).complainWithoutAppo),
leading: Radio( leading: Radio(
value: MessageType.ComplaintWithoutAppointment, value: MessageType.ComplaintWithoutAppointment,
groupValue: messageTypeDialog, groupValue: messageTypeDialog,
activeColor: Theme.of(context).primaryColor, activeColor: Theme.of(context).primaryColor,
onChanged: (MessageType value) => onChanged: (MessageType value) => setMessageDialogType(value),
setMessageDialogType(value),
), ),
), ),
), ),
@ -778,8 +766,7 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
value: MessageType.Question, value: MessageType.Question,
groupValue: messageTypeDialog, groupValue: messageTypeDialog,
activeColor: Theme.of(context).primaryColor, activeColor: Theme.of(context).primaryColor,
onChanged: (MessageType value) => onChanged: (MessageType value) => setMessageDialogType(value),
setMessageDialogType(value),
), ),
), ),
), ),
@ -794,16 +781,14 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
Expanded( Expanded(
flex: 1, flex: 1,
child: InkWell( child: InkWell(
onTap: () => onTap: () => setMessageDialogType(MessageType.Compliment),
setMessageDialogType(MessageType.Compliment),
child: ListTile( child: ListTile(
title: Texts(TranslationBase.of(context).compliment), title: Texts(TranslationBase.of(context).compliment),
leading: Radio( leading: Radio(
value: MessageType.Compliment, value: MessageType.Compliment,
groupValue: messageTypeDialog, groupValue: messageTypeDialog,
activeColor: Theme.of(context).primaryColor, activeColor: Theme.of(context).primaryColor,
onChanged: (MessageType value) => onChanged: (MessageType value) => setMessageDialogType(value),
setMessageDialogType(value),
), ),
), ),
), ),
@ -818,16 +803,14 @@ class FeedbackTypeDialogState extends State<FeedbackTypeDialog> {
Expanded( Expanded(
flex: 1, flex: 1,
child: InkWell( child: InkWell(
onTap: () => onTap: () => setMessageDialogType(MessageType.Suggestion),
setMessageDialogType(MessageType.Suggestion),
child: ListTile( child: ListTile(
title: Texts(TranslationBase.of(context).suggestion), title: Texts(TranslationBase.of(context).suggestion),
leading: Radio( leading: Radio(
value: MessageType.Suggestion, value: MessageType.Suggestion,
groupValue: messageTypeDialog, groupValue: messageTypeDialog,
activeColor: Theme.of(context).primaryColor, activeColor: Theme.of(context).primaryColor,
onChanged: (MessageType value) => onChanged: (MessageType value) => setMessageDialogType(value),
setMessageDialogType(value),
), ),
), ),
), ),

@ -4,6 +4,7 @@ import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/feedback/feedback-detail.dart'; import 'package:diplomaticquarterapp/pages/feedback/feedback-detail.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
@ -24,120 +25,116 @@ class _StatusFeedbackPageState extends State<StatusFeedbackPage> {
builder: (_, model, widget) => AppScaffold( builder: (_, model, widget) => AppScaffold(
baseViewModel: model, baseViewModel: model,
isShowDecPage: false, isShowDecPage: false,
body: model.cOCItemList.isNotEmpty body: Column(
? Container( children: [
margin: EdgeInsets.only( Expanded(
top: 8.0, left: 8.0, right: 8.0, bottom: 80), child: model.cOCItemList.isNotEmpty
padding: EdgeInsets.all(15.0), ? Container(
child: ListView.builder( margin: EdgeInsets.only(top: 8.0, left: 8.0, right: 8.0, bottom: 80),
itemCount: model.cOCItemList.length, padding: EdgeInsets.all(15.0),
itemBuilder: (context, index) => InkWell( child: ListView.builder(
onTap: () { itemCount: model.cOCItemList.length,
gotodetails(model.cOCItemList[index]); itemBuilder: (context, index) => InkWell(
}, onTap: () {
child: Container( gotodetails(model.cOCItemList[index]);
decoration: BoxDecoration( },
shape: BoxShape.rectangle, child: Container(
border: Border.all(color: Colors.white, width: 0.5), decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(5)), shape: BoxShape.rectangle,
color: Colors.white, border: Border.all(color: Colors.white, width: 0.5),
), borderRadius: BorderRadius.all(Radius.circular(5)),
margin: EdgeInsets.all(4), color: Colors.white,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
SizedBox(
height: 8,
), ),
Row( margin: EdgeInsets.all(4),
mainAxisAlignment: child: Padding(
MainAxisAlignment.spaceBetween, padding: const EdgeInsets.all(8.0),
children: <Widget>[ child: Column(
Expanded( crossAxisAlignment: CrossAxisAlignment.start,
child: Column( children: <Widget>[
crossAxisAlignment: SizedBox(
CrossAxisAlignment.start, height: 8,
children: <Widget>[
Texts(
'${model.cOCItemList[index].cOCTitle}'),
Texts(
TranslationBase.of(context).number +
' : ${model.cOCItemList[index].itemID}',
variant: 'overline',
),
],
), ),
), Row(
Expanded( mainAxisAlignment: MainAxisAlignment.spaceBetween,
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Texts( Expanded(
'${model.cOCItemList[index].status}'), child: Column(
Texts( crossAxisAlignment: CrossAxisAlignment.start,
'${model.cOCItemList[index].date}', children: <Widget>[
variant: 'overline', Texts('${model.cOCItemList[index].cOCTitle}'),
Texts(
TranslationBase.of(context).number + ' : ${model.cOCItemList[index].itemID}',
variant: 'overline',
),
],
),
),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Texts('${model.cOCItemList[index].status}'),
Texts(
'${model.cOCItemList[index].date}',
variant: 'overline',
),
],
),
), ),
], ],
), ),
), Texts('${model.cOCItemList[index].formType}'),
], Divider(
height: 4.5,
color: Colors.grey[500],
)
],
),
), ),
Texts('${model.cOCItemList[index].formType}'), ))),
Divider( )
height: 4.5, : Center(
color: Colors.grey[500], child: Column(
) children: [
], SizedBox(
height: MediaQuery.of(context).size.height * 0.4,
),
Image.asset(
'assets/images/comments.png',
width: 80,
height: 80,
),
SizedBox(
height: 15,
),
Text(
TranslationBase.of(context).noSearchResult,
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w600,
letterSpacing: -0.48,
color: Color(0xff2B353E),
), ),
), ),
))), ],
)
: Container(
child: Center(
child: Column(
children: [
SizedBox(
height: MediaQuery.of(context).size.height * 0.4,
),
Image.asset(
'assets/images/comments.png',
width: 80,
height: 80,
), ),
SizedBox( ),
height: 15, ),
), Container(
Texts(TranslationBase.of(context).noSearchResult), color: Colors.white,
], padding: EdgeInsets.only(top: 16, bottom: 16, right: 21, left: 21),
), child: DefaultButton(
), TranslationBase.of(context).search,
), () => {},
bottomSheet: Container(
height: 80,
width: double.infinity,
padding: EdgeInsets.all(15.0),
child: Center(
child: Container(
height: MediaQuery.of(context).size.height * 0.1,
child: SecondaryButton(
label: TranslationBase.of(context).search,
textColor: Colors.white,
disabled: true,
onTap: () {},
), ),
), ),
), ],
), ),
), ),
); );
} }
gotodetails(item) { gotodetails(item) {
Navigator.pushReplacement( Navigator.pushReplacement(context, FadePage(page: FeedbackDetails(items: item)));
context, FadePage(page: FeedbackDetails(items: item)));
} }
} }

@ -83,7 +83,6 @@ class _PhoneNumberSelectorWidgetState extends State<PhoneNumberSelectorWidget> {
_labelText, _labelText,
style: TextStyle( style: TextStyle(
fontSize: 11, fontSize: 11,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Color(0xff2B353E), color: Color(0xff2B353E),
letterSpacing: -0.44, letterSpacing: -0.44,
@ -96,7 +95,6 @@ class _PhoneNumberSelectorWidgetState extends State<PhoneNumberSelectorWidget> {
onChanged: (value) => widget.onNumberChange(value), onChanged: (value) => widget.onNumberChange(value),
style: TextStyle( style: TextStyle(
fontSize: 14, fontSize: 14,
height: 21 / 14, height: 21 / 14,
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Color(0xff2B353E), color: Color(0xff2B353E),
@ -107,7 +105,6 @@ class _PhoneNumberSelectorWidgetState extends State<PhoneNumberSelectorWidget> {
hintText: _hintText, hintText: _hintText,
hintStyle: TextStyle( hintStyle: TextStyle(
fontSize: 14, fontSize: 14,
height: 21 / 14, height: 21 / 14,
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Color(0xff575757), color: Color(0xff575757),
@ -120,7 +117,6 @@ class _PhoneNumberSelectorWidgetState extends State<PhoneNumberSelectorWidget> {
prefix, prefix,
style: TextStyle( style: TextStyle(
fontSize: 14, fontSize: 14,
height: 21 / 14, height: 21 / 14,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xff2E303A), color: Color(0xff2E303A),
@ -189,12 +185,12 @@ class _MobileNo extends State<MobileNo> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
projectProvider = Provider.of(context); projectProvider = Provider.of(context);
return Visibility( return Visibility(
child: Column(children: <Widget>[ child: Column(children: <Widget>[
Row( Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
child: Container( child: Container(
margin: EdgeInsets.only(bottom: 10.0), margin: EdgeInsets.only(bottom: 10.0),
height: 60.0, height: 60.0,
decoration: BoxDecoration( decoration: BoxDecoration(
@ -207,70 +203,75 @@ class _MobileNo extends State<MobileNo> {
), ),
width: MediaQuery.of(context).size.width * 0.89, width: MediaQuery.of(context).size.width * 0.89,
child: Padding( child: Padding(
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
child: DropdownButtonHideUnderline( child: DropdownButtonHideUnderline(
child: DropdownButton( child: DropdownButton(
isExpanded: true, isExpanded: true,
value: _selectedType, value: _selectedType,
iconSize: 40, iconSize: 40,
elevation: 16, elevation: 16,
onChanged: (value) => { onChanged: (value) => {
widget.onCountryChange(value), widget.onCountryChange(value),
setState(() { setState(() {
countryCode = value; countryCode = value;
_selectedType = value; _selectedType = value;
}) })
}, },
items: counties.map<DropdownMenuItem<String>>((Countries value) { items: counties.map<DropdownMenuItem<String>>((Countries value) {
return DropdownMenuItem<String>( return DropdownMenuItem<String>(
value: value.code, value: value.code,
child: Text(projectProvider.isArabic == true ? value.nameAr : value.name), child: Text(projectProvider.isArabic == true ? value.nameAr : value.name),
); );
}).toList())))), }).toList()),
), ),
], ),
), ),
Container( ),
padding: EdgeInsets.all(5), ],
decoration: BoxDecoration(color: Colors.white, border: Border.all(color: Colors.grey), borderRadius: BorderRadius.circular(10)), ),
child: Row(children: <Widget>[ Container(
Expanded( padding: EdgeInsets.all(5),
decoration: BoxDecoration(color: Colors.white, border: Border.all(color: Colors.grey), borderRadius: BorderRadius.circular(10)),
child: Row(children: <Widget>[
Expanded(
flex: 1, flex: 1,
child: Icon( child: Icon(
Icons.phone, Icons.phone,
color: secondaryColor, color: secondaryColor,
)), ),
Expanded( ),
Expanded(
flex: 1, flex: 1,
child: Text( child: Text(
countryCode, countryCode,
overflow: TextOverflow.clip, overflow: TextOverflow.clip,
)),
Expanded(
flex: 4,
child: Container(
margin: widget.margin != null ? EdgeInsets.all(widget.margin) : EdgeInsets.only(top: widget.marginTop, right: widget.marginRight, bottom: widget.marginBottom, left: widget.marginLeft),
child: TextField(
controller: widget.controller,
keyboardType: TextInputType.number,
maxLength: 10,
inputFormatters: <TextInputFormatter>
[
FilteringTextInputFormatter.allow(RegExp("[0-9]")),
],
// maxLengthEnforced: true,
// onChanged: (value) {
// widget.controller.text = countryCode;
// },
onChanged: (value) => widget.onNumberChange(value),
decoration: InputDecoration(counterText: "", border: InputBorder.none, hintText: '5xxxxxxxx'),
), ),
), ),
) Expanded(
]), flex: 4,
) child: Container(
])); margin: widget.margin != null ? EdgeInsets.all(widget.margin) : EdgeInsets.only(top: widget.marginTop, right: widget.marginRight, bottom: widget.marginBottom, left: widget.marginLeft),
child: TextField(
controller: widget.controller,
keyboardType: TextInputType.number,
maxLength: 10,
inputFormatters: <TextInputFormatter>[
FilteringTextInputFormatter.allow(RegExp("[0-9]")),
],
// maxLengthEnforced: true,
// onChanged: (value) {
// widget.controller.text = countryCode;
// },
onChanged: (value) => widget.onNumberChange(value),
decoration: InputDecoration(counterText: "", border: InputBorder.none, hintText: '5xxxxxxxx'),
),
),
)
]),
)
]),
);
} }
} }

Loading…
Cancel
Save