diff --git a/lib/components/rounded_dropdown_feild.dart b/lib/components/rounded_dropdown_feild.dart index ffe6669..53b3aa4 100644 --- a/lib/components/rounded_dropdown_feild.dart +++ b/lib/components/rounded_dropdown_feild.dart @@ -6,12 +6,14 @@ class RoundedDropDownFeild extends StatefulWidget { final String text; final bool isRequiredFeild; final bool isCountry; + final String value; const RoundedDropDownFeild({ Key key, this.isRequiredFeild, this.onChange, this.text, + this.value, this.isCountry, }) : super(key: key); @@ -20,6 +22,7 @@ class RoundedDropDownFeild extends StatefulWidget { isRequiredFeild: isRequiredFeild, onChange: onChange, text: text, + value: value, isCountry: isCountry, ); } @@ -29,6 +32,7 @@ class _RoundedDropDownFeildState extends State { final String text; final bool isRequiredFeild; final bool isCountry; + final String value; bool _isFieldValid; _RoundedDropDownFeildState({ @@ -36,6 +40,7 @@ class _RoundedDropDownFeildState extends State { this.isRequiredFeild, this.onChange, this.text, + this.value, this.isCountry, }); @@ -187,8 +192,7 @@ class DropDownContainer extends StatelessWidget { final size = MediaQuery.of(context).size; return Container( - margin: EdgeInsets.symmetric(vertical: 1), - padding: EdgeInsets.symmetric(horizontal: 25, vertical: 3), + padding: EdgeInsets.symmetric(horizontal: 18, vertical: 3), width: size.width * 0.9, decoration: BoxDecoration( color: Colors.grey[300], borderRadius: BorderRadius.circular(15)), diff --git a/lib/components/rounded_input_field.dart b/lib/components/rounded_input_field.dart index 90a1094..49251fc 100644 --- a/lib/components/rounded_input_field.dart +++ b/lib/components/rounded_input_field.dart @@ -7,6 +7,7 @@ class RoundedTextFeild extends StatefulWidget { final String text; final bool isNumber; final IconData icon; + final String value; final bool isPhoneNumber; final bool isRequiredFeild; const RoundedTextFeild({ @@ -15,6 +16,7 @@ class RoundedTextFeild extends StatefulWidget { this.isPassword, this.isNumber, this.icon, + this.value, this.text, this.isPhoneNumber = false, this.isRequiredFeild, @@ -27,6 +29,7 @@ class RoundedTextFeild extends StatefulWidget { isPhoneNumber: isPhoneNumber, onChange: onChange, text: text, + value: value, isRequiredFeild: isRequiredFeild, ); } @@ -36,6 +39,7 @@ class _RoundedTextFeildState extends State { final bool isPassword; final String text; final bool isNumber; + final String value; final IconData icon; final bool isPhoneNumber; final bool isRequiredFeild; @@ -47,6 +51,7 @@ class _RoundedTextFeildState extends State { this.isPassword, this.isNumber, this.icon, + this.value, this.text, this.isPhoneNumber = false, this.isRequiredFeild, @@ -72,6 +77,7 @@ class _RoundedTextFeildState extends State { ), TextFieldContainer( child: TextFormField( + initialValue: value, validator: (value) { if (value.isEmpty) { setState(() { @@ -119,6 +125,7 @@ class _RoundedTextFeildState extends State { ), alignment: Alignment.centerRight, ), + onPressed: () {}, ), ), ), diff --git a/lib/main.dart b/lib/main.dart index 5f224c7..e769bdb 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,10 +1,17 @@ +import 'package:dialog_doc990_mobile/providers/sign_up_provider.dart'; import 'package:dialog_doc990_mobile/route_generator.dart'; import 'package:dialog_doc990_mobile/screens/home/home_screen.dart'; import 'package:dialog_doc990_mobile/screens/welcome/welcome_screen.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:provider/provider.dart'; -void main() => runApp(DocApp()); +void main() => runApp( + MultiProvider( + providers: [ChangeNotifierProvider(create: (_) => SignUpProvider())], + child: DocApp(), + ), + ); class DocApp extends StatelessWidget { @override diff --git a/lib/providers/sign_up_provider.dart b/lib/providers/sign_up_provider.dart new file mode 100644 index 0000000..7cff388 --- /dev/null +++ b/lib/providers/sign_up_provider.dart @@ -0,0 +1,85 @@ +import 'package:flutter/material.dart'; + +class SignUpProvider with ChangeNotifier { + String _email = ''; + String _phoneNumber = ''; + String _country = ''; + String _title = ''; + String _name = ''; + String _nic = ''; + String _password = ''; + + void setEmail(String email) { + _email = email; + notifyListeners(); + } + + void setPhoneNumber(String phoneNumber) { + _phoneNumber = phoneNumber; + notifyListeners(); + } + + void setCountry(String country) { + // var countryData = country.split(' '); + _country = country; + notifyListeners(); + } + + void setTitle(String title) { + _title = title; + notifyListeners(); + } + + void setName(String name) { + _name = name; + notifyListeners(); + } + + void setNIC(String nic) { + _nic = nic; + notifyListeners(); + } + + void setPassword(String password) { + _password = password; + notifyListeners(); + } + + String getEmail() { + return _email; + } + + String getPhoneNumber() { + return _phoneNumber; + } + + String getCountry() { + return _country; + } + + String getTitle() { + return _title; + } + + String getName() { + return _name; + } + + String getNIC() { + return _nic; + } + + String getPassword() { + return _password; + } + + void resetValues() { + _email = ''; + _country = ''; + _phoneNumber = ''; + _nic = ''; + _title = ''; + _password = ''; + _name = ''; + } +} diff --git a/lib/screens/home/home_navigation_menu.dart b/lib/screens/home/home_navigation_menu.dart index d8ca85b..b5125c0 100644 --- a/lib/screens/home/home_navigation_menu.dart +++ b/lib/screens/home/home_navigation_menu.dart @@ -1,3 +1,4 @@ +import 'package:dialog_doc990_mobile/constants.dart'; import 'package:dialog_doc990_mobile/screen_keys.dart'; import 'package:flutter/material.dart'; @@ -39,7 +40,7 @@ class HomeNavigationMenu extends StatelessWidget { child: Text( text, style: TextStyle( - fontFamily: 'Larsseit', + fontFamily: FONT_FAMILY_PRIMARY, fontSize: 18, ), ), diff --git a/lib/screens/home/home_screen_service_content.dart b/lib/screens/home/home_screen_service_content.dart index 6a1e4d5..a7ce981 100644 --- a/lib/screens/home/home_screen_service_content.dart +++ b/lib/screens/home/home_screen_service_content.dart @@ -16,6 +16,11 @@ class HomeScreenServiceContent extends StatefulWidget { class _HomeScreenServiceContentState extends State { final Widget child; + @override + void initialState() { + super.initState(); + } + _HomeScreenServiceContentState({ this.child, }); diff --git a/lib/screens/signup/signup_form_1.dart b/lib/screens/signup/signup_form_1.dart index be05bcf..099cb6e 100644 --- a/lib/screens/signup/signup_form_1.dart +++ b/lib/screens/signup/signup_form_1.dart @@ -1,10 +1,12 @@ import 'package:dialog_doc990_mobile/components/rounded_button.dart'; import 'package:dialog_doc990_mobile/components/rounded_input_field.dart'; import 'package:dialog_doc990_mobile/constants.dart'; +import 'package:dialog_doc990_mobile/providers/sign_up_provider.dart'; import 'package:dialog_doc990_mobile/screen_keys.dart'; import 'package:dialog_doc990_mobile/screens/signup/signup_screen_2.dart'; import 'package:flutter/material.dart'; import 'package:page_transition/page_transition.dart'; +import 'package:provider/provider.dart'; class SignUpForm1 extends StatefulWidget { @override @@ -12,19 +14,13 @@ class SignUpForm1 extends StatefulWidget { } class _SignUpForm1State extends State { - String phoneNumber; - String emailAddress; GlobalKey _signUpFrom1Key = GlobalKey(debugLabel: '_signFrom1Key'); - _SignUpForm1State({ - this.phoneNumber, - this.emailAddress, - }); void submitAndNavigateTo2ndScreen() { if (_signUpFrom1Key.currentState.validate() && - emailAddress != null && - phoneNumber != null) { + context.read().getEmail() != null && + context.read().getPhoneNumber() != null) { Navigator.push( context, PageTransition( @@ -69,8 +65,9 @@ class _SignUpForm1State extends State { isPhoneNumber: false, icon: Icons.email, text: 'Email Address', + value: context.read().getEmail(), onChange: (text) { - emailAddress = text; + context.read().setEmail(text); }, ), RoundedTextFeild( @@ -80,8 +77,9 @@ class _SignUpForm1State extends State { isPhoneNumber: true, icon: Icons.phone, text: 'Your Phone Number', + value: context.read().getPhoneNumber(), onChange: (text) { - phoneNumber = text; + context.read().setPhoneNumber(text); }, ), SizedBox( diff --git a/lib/screens/signup/signup_form_2.dart b/lib/screens/signup/signup_form_2.dart index ea2a24f..b4d92a8 100644 --- a/lib/screens/signup/signup_form_2.dart +++ b/lib/screens/signup/signup_form_2.dart @@ -2,8 +2,10 @@ import 'package:dialog_doc990_mobile/components/rounded_button.dart'; import 'package:dialog_doc990_mobile/components/rounded_dropdown_feild.dart'; import 'package:dialog_doc990_mobile/components/rounded_input_field.dart'; import 'package:dialog_doc990_mobile/constants.dart'; +import 'package:dialog_doc990_mobile/providers/sign_up_provider.dart'; import 'package:dialog_doc990_mobile/screen_keys.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; class SignUpForm2 extends StatefulWidget { @override @@ -11,25 +13,37 @@ class SignUpForm2 extends StatefulWidget { } class _SignUpForm2State extends State { - String title; - String name; - String country; - String nic; - String password; GlobalKey _signUpForm2Key = GlobalKey(debugLabel: '_signFrom2Key'); - _SignUpForm2State({ - this.title, - this.name, - this.country, - this.nic, - this.password, - }); - void validateAndSubmitForm() { if (_signUpForm2Key.currentState.validate()) { - print('Form validated'); + String email = context.read().getEmail(); + String phoneNumber = context.read().getPhoneNumber(); + String country = + context.read().getCountry().split(' ')[1]; + String title = context.read().getTitle().split(' ')[1]; + String name = context.read().getName(); + String nic = context.read().getNIC(); + String password = context.read().getPassword(); + + var userData = { + 'email': email, + 'phoneNumber': phoneNumber, + 'country': country, + 'title': title, + 'name': name, + 'nic': nic, + 'password': password, + }; + + print(userData); + // send data to backend + + // reset sign up state values + context.read().resetValues(); + // navigate to the home screen + Navigator.pushNamedAndRemoveUntil(context, '/home', (route) => false); } } @@ -67,8 +81,10 @@ class _SignUpForm2State extends State { RoundedDropDownFeild( text: 'Your Country', isCountry: true, + value: context.read().getCountry(), isRequiredFeild: true, onChange: (value) { + context.read().setCountry(value); print('Country ' + value); }, ), @@ -76,7 +92,9 @@ class _SignUpForm2State extends State { isRequiredFeild: true, isCountry: false, text: 'Your Title', + value: context.read().getTitle(), onChange: (value) { + context.read().setTitle(value); print('Title ' + value); }, ), @@ -86,9 +104,10 @@ class _SignUpForm2State extends State { isNumber: false, icon: Icons.phone, isPhoneNumber: false, + value: context.read().getName(), text: 'Your Name', onChange: (text) { - print(text); + context.read().setName(text); }, ), RoundedTextFeild( @@ -97,9 +116,10 @@ class _SignUpForm2State extends State { isNumber: true, icon: Icons.credit_card, isPhoneNumber: false, + value: context.read().getNIC(), text: 'NIC/ Passport Number', onChange: (text) { - print(text); + context.read().setNIC(text); }, ), RoundedTextFeild( @@ -109,8 +129,9 @@ class _SignUpForm2State extends State { icon: Icons.password, isPhoneNumber: false, text: 'Password', + value: context.read().getPassword(), onChange: (text) { - print(text); + context.read().setPassword(text); }, ), SizedBox( diff --git a/pubspec.lock b/pubspec.lock index 25b4ac0..3a7b398 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -142,6 +142,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.0" + nested: + dependency: transitive + description: + name: nested + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" page_transition: dependency: "direct main" description: @@ -163,6 +170,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.11.1" + provider: + dependency: "direct main" + description: + name: provider + url: "https://pub.dartlang.org" + source: hosted + version: "5.0.0" sky_engine: dependency: transitive description: flutter diff --git a/pubspec.yaml b/pubspec.yaml index 6a0fb46..80bdef5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -21,6 +21,7 @@ dependencies: animated_text_kit: ^4.2.1 splashscreen: ^1.2.0 animations: ^2.0.1 + provider: ^5.0.0 dev_dependencies: flutter_test: