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.
diplomatic-quarter/lib/pages/ChildVaccines/child_vaccines_page.dart

155 lines
6.0 KiB
Dart

import 'package:diplomaticquarterapp/core/viewModels/child_vaccines/child_vaccines_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/child_vaccines/user_information_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/my_balance_view_model.dart';
import 'package:diplomaticquarterapp/pages/ChildVaccines/child_page.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/input/text_field.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class ChildVaccinesPage extends StatefulWidget {
@override
_ChildVaccinesPageState createState() => _ChildVaccinesPageState();
}
class _ChildVaccinesPageState extends State<ChildVaccinesPage>
with SingleTickerProviderStateMixin {
TextEditingController titleController = TextEditingController();
var checkedValue = false;
String addEmail = "";
final updateEmailFormKey = GlobalKey<FormState>();
@override
Widget build(BuildContext context) {
return BaseView<UserInformationViewModel>(
onModelReady: (model) => model.getUserInformationRequestOrders(),
builder: (_, model, w) => AppScaffold(
isShowAppBar: true,
baseViewModel: model,
appBarTitle: TranslationBase.of(context).vaccination,
body: SingleChildScrollView(
physics: ScrollPhysics(),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
SizedBox(
height: 20,
),
Padding(
padding: const EdgeInsets.all(10.0),
child: Container(
child: Texts(
TranslationBase.of(context).welcomeBackV,
fontSize: 20,
),
),
),
Divider(
color: Colors.black,
indent: 10,
endIndent: 10,
),
SizedBox(
height: 20,
),
Padding(
padding: const EdgeInsets.all(10.0),
child: Container(
child: Texts(
TranslationBase.of(context).instructions,
fontSize: 20,
),
),
),
Divider(
color: Colors.black,
indent: 10,
endIndent: 10,
),
Form(
key: updateEmailFormKey,
child: Padding(
padding: const EdgeInsets.all(10.0),
child: Container(
margin: EdgeInsets.only(left: 10, right: 10, top: 15),
child: TextFields(
fillColor: Colors.red,
initialValue: model.userInformationModelList.emailAddress,
fontSize: 20,
hintColor: Colors.black,
fontWeight: FontWeight.w600,
onChanged: (text) {
setState(() {
addEmail = text;
});
},
validator: (value) {
if (value.isEmpty)
return TranslationBase.of(context).enterEmail;
else if (!RegExp(r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+").hasMatch(value))
return TranslationBase.of(context).validEmail;
return null;
},
),
),
),
),
Container(
height: MediaQuery.of(context).size.height * 0.10,
width: double.infinity,
padding: EdgeInsets.all(15),
child: SecondaryButton(
textColor: Colors.white,
color: model.userInformationModelList.emailAddress == addEmail ? Colors.white24 : Color.fromRGBO(63, 72, 74, 1,),
disabled: addEmail.isEmpty,
label: TranslationBase.of(context).updateEmail,
onTap: () async{
final form = updateEmailFormKey.currentState;
if (form.validate()) {
form.save();
await model.updateEmail(addEmail);
AppToast.showSuccessToast(message: TranslationBase.of(context).updatedEmail);
}
},
),
),
Container(
height: MediaQuery.of(context).size.height * 0.10,
width: double.infinity,
padding: EdgeInsets.all(15),
child: SecondaryButton(
textColor: Colors.white,
color: Color.fromRGBO(
63,
72,
74,
1,
),
label: TranslationBase.of(context).viewListChildren,
onTap: () => Navigator.push(
context,
FadePage(
page: ChildPage(informationModel: model.userInformationModelList,),
),
),
),
),
SizedBox(
height: MediaQuery.of(context).size.height * 0.15,
)
],
),
),
),
);
}
}