diff --git a/lib/main.dart b/lib/main.dart index 79f8bfd..0dfa296 100755 --- a/lib/main.dart +++ b/lib/main.dart @@ -53,7 +53,7 @@ import 'pages/LabelPages/label_result_screen.dart'; import 'pages/LabelPages/label_scan_screen.dart'; import 'pages/LoginRegisterPages/login_screen.dart'; import 'pages/my_info_screen.dart'; -import 'pages/LoginRegisterPages/rePass_screen.dart'; +import 'pages/LoginRegisterPages/re_pass_screen.dart'; import 'pages/TestPages/test_add_screen.dart'; import 'pages/TestPages/test_detail_screen.dart'; import 'pages/TestPages/test_filter_screen.dart'; @@ -195,8 +195,7 @@ class MyApp extends StatelessWidget { Routes.myPackagesResultScreen: (ctx) => MyPackagesResultScreen(), Routes.myPackagesFilterScreen: (ctx) => MyPackageFilterScreen(), - Routes.myPackagesDetailScreen: (ctx) => - PackageDetailScreen(), + Routes.myPackagesDetailScreen: (ctx) => PackageDetailScreen(), Routes.packagesTransferScreen: (ctx) => PackageTransferScreen(), Routes.myPackagesHistoryScreen: (ctx) => MyPackagesHistoryScreen(), diff --git a/lib/pages/LoginRegisterPages/rePass_screen.dart b/lib/pages/LoginRegisterPages/rePass_screen.dart deleted file mode 100755 index 1fe7638..0000000 --- a/lib/pages/LoginRegisterPages/rePass_screen.dart +++ /dev/null @@ -1,239 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -import 'package:provider/provider.dart'; - -import '../../providers/auth.dart'; -import '../../providers/connectivity.dart'; -import '../../widgets/Global/internet_error.dart'; - -class RePassScreen extends StatefulWidget { - // static const route = '/HomeScreen'; - - @override - State createState() { - return _RePassScreenState(); - } -} - -class _RePassScreenState extends State { - final _form = GlobalKey(); - bool _isLoading = false; - // final cellNumberController = TextEditingController(); - final passwordController = new TextEditingController(); - final rePasswordController = new TextEditingController(); - String token = 'Bearer '; - // String token = 'Bearer '; - - bool _hidePass = true; - bool _hideRePass = true; - bool isInit = true; - - @override - void didChangeDependencies() { - if (isInit) { - token += ModalRoute.of(context)!.settings.arguments.toString(); - isInit = false; - } - super.didChangeDependencies(); - } - - Future _showDialog(String message) async { - await showDialog( - context: context, - builder: (ctx) => AlertDialog( - content: Text(message), - actions: [ - TextButton( - child: Text('Ok'), - onPressed: () { - Navigator.of(ctx).pop(); - }, - ), - ], - ), - ); - } - - void _sendRePass() async { - if (!_form.currentState!.validate()) { - return; - } - _form.currentState!.save(); - setState(() { - _isLoading = true; - }); - await Provider.of(context, listen: false) - .sendRePass(passwordController.text, token) - .then((value) async { - if (value == 'done') { - await _showDialog( - 'Password changed successfully.Now login to your account.'); - Navigator.of(context).pop(); - } - }); - } - - @override - Widget build(BuildContext context) { - final _media = MediaQuery.of(context); - // final double _pixelRatio = (_media.size.height / _media.size.width * 7 / 5); - final double _devicewidth = _media.size.width; - final double _deviceBlockSize = _devicewidth / 100; - return SafeArea( - child: Scaffold( - appBar: AppBar( - centerTitle: true, - title: Text('CSSD', style: TextStyle(color: Colors.white,),), - backgroundColor: Colors.black, - ), - body: Selector( - builder: (ctx, value, _) => value != 'offline' - ? _isLoading - ? Center( - child: CircularProgressIndicator( - color: Colors.black, - ), - ) - : Form( - key: _form, - child: ListView( - padding: EdgeInsets.symmetric(horizontal: 20), - children: [ - Container( - padding: EdgeInsets.symmetric(vertical: 20), - child: Text( - 'CHANGE PASSWORD', - textAlign: TextAlign.left, - style: TextStyle( - color: Colors.black, - fontSize: 6 * _deviceBlockSize, - letterSpacing: 3, - fontWeight: FontWeight.w700, - ), - ), - ), - TextFormField( - validator: (value) { - if (value!.isEmpty) { - return 'Password is required.'; - } - if (value.length < 8) { - return 'Password at least is 8 characters.'; - } - return null; - }, - obscureText: _hidePass, - controller: passwordController, - decoration: InputDecoration( - icon: Icon( - FontAwesomeIcons.starOfLife, - size: 6 * _deviceBlockSize, - ), - labelStyle: TextStyle( - fontWeight: FontWeight.w100, - fontSize: 4 * _deviceBlockSize, - ), - labelText: 'Password', - isDense: true, - contentPadding: EdgeInsets.symmetric( - vertical: 2, horizontal: 3), - suffixIcon: InkWell( - child: Icon(FontAwesomeIcons.eye), - onTap: () { - setState(() { - _hidePass = !_hidePass; - }); - }, - ), - ), - style: TextStyle( - fontWeight: FontWeight.w700, - fontSize: 5 * _deviceBlockSize, - ), - textInputAction: TextInputAction.done, - onFieldSubmitted: (_) { - _sendRePass(); - }, - keyboardType: TextInputType.visiblePassword, - ), - SizedBox( - height: 30, - ), - TextFormField( - validator: (value) { - if (value!.length < 8) { - return 'Password at least is 8 characters.'; - } - if (value != passwordController.text) { - return 'Password doesnt match!'; - } - return null; - }, - obscureText: _hideRePass, - controller: rePasswordController, - decoration: InputDecoration( - icon: Icon( - FontAwesomeIcons.starOfLife, - size: 6 * _deviceBlockSize, - ), - labelStyle: TextStyle( - fontWeight: FontWeight.w100, - fontSize: 4 * _deviceBlockSize, - ), - labelText: 'Confirm Password', - isDense: true, - contentPadding: EdgeInsets.symmetric( - vertical: 2, horizontal: 3), - suffixIcon: InkWell( - child: Icon(FontAwesomeIcons.eye), - onTap: () { - setState(() { - _hideRePass = !_hideRePass; - }); - }, - ), - ), - style: TextStyle( - fontWeight: FontWeight.w700, - fontSize: 5 * _deviceBlockSize, - ), - textInputAction: TextInputAction.done, - onFieldSubmitted: (_) { - _sendRePass(); - }, - keyboardType: TextInputType.visiblePassword, - ), - SizedBox(height: 40), - Row( - children: [ - InkWell( - onTap: () => _sendRePass(), - child: Container( - width: 88 * _deviceBlockSize, - padding: EdgeInsets.all(10), - decoration: BoxDecoration( - color: Colors.black, - borderRadius: BorderRadius.circular(7), - ), - child: Text( - 'Change', - style: TextStyle( - color: Colors.white, - ), - textAlign: TextAlign.center, - ), - ), - ), - Spacer(), - ], - ), - SizedBox(height: 10), - ], - ), - ) - : ConnectionErrorBox(), - selector: (_, connectivity) => connectivity.conStatus, - )), - ); - } -} diff --git a/lib/pages/LoginRegisterPages/re_pass_screen.dart b/lib/pages/LoginRegisterPages/re_pass_screen.dart new file mode 100644 index 0000000..2782155 --- /dev/null +++ b/lib/pages/LoginRegisterPages/re_pass_screen.dart @@ -0,0 +1,262 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +import '../../config/routes.dart'; +import '../../providers/auth.dart'; +import '../../providers/connectivity.dart'; +import '../../widgets/Global/internet_error.dart'; + +class RePassScreen extends StatefulWidget { + // static const route = '/HomeScreen'; + + @override + State createState() { + return _RePassScreenState(); + } +} + +class _RePassScreenState extends State { + final _form = GlobalKey(); + bool _isLoading = false; + + // final cellNumberController = TextEditingController(); + final passwordController = new TextEditingController(); + final rePasswordController = new TextEditingController(); + String token = 'Bearer '; + + // String token = 'Bearer '; + + bool _hidePass = true; + bool _hideRePass = true; + bool isInit = true; + + @override + void didChangeDependencies() { + if (isInit) { + token += ModalRoute.of(context)!.settings.arguments.toString(); + isInit = false; + } + super.didChangeDependencies(); + } + + Future _showDialog(String message) async { + await showDialog( + context: context, + builder: (ctx) => AlertDialog( + content: Text(message), + actions: [ + TextButton( + child: Text('Ok'), + onPressed: () { + Navigator.of(ctx).pop(); + }, + ), + ], + ), + ); + } + + void _sendRePass() async { + if (!_form.currentState!.validate()) { + return; + } + _form.currentState!.save(); + setState(() { + _isLoading = true; + }); + await Provider.of(context, listen: false) + .sendRePass(passwordController.text, rePasswordController.text, token) + .then((value) async { + if (value == 'done') { + await _showDialog('Password changed successfully.'); + Navigator.of(context).pop(); + } + }); + } + + @override + Widget build(BuildContext context) { + final _media = MediaQuery.of(context); + // final double _pixelRatio = (_media.size.height / _media.size.width * 7 / 5); + final double _devicewidth = _media.size.width; + final double _deviceBlockSize = _devicewidth / 100; + return SafeArea( + child: Scaffold( + appBar: AppBar( + titleSpacing: -10, + title: Text( + 'Home', + style: TextStyle( + color: Colors.white, + ), + ), + backgroundColor: Colors.black, + leading: IconButton( + icon: Icon( + Icons.keyboard_arrow_left, + color: Colors.white, + size: 35, + ), + onPressed: () => Navigator.of(context).pushNamed(Routes.homePage), + ), + ), + body: Selector( + builder: (ctx, value, _) => value != 'offline' + ? _isLoading + ? Center( + child: CircularProgressIndicator( + color: Colors.black, + ), + ) + : Form( + key: _form, + child: ListView( + padding: EdgeInsets.symmetric(horizontal: 15), + children: [ + Container( + padding: EdgeInsets.only(top: 20, bottom: 5), + child: Text( + 'CHANGE PASSWORD', + textAlign: TextAlign.left, + style: TextStyle( + color: Colors.black, + fontSize: 6 * _deviceBlockSize, + // letterSpacing: 3, + fontWeight: FontWeight.w700, + ), + ), + ), + Container( + padding: EdgeInsets.symmetric(horizontal: 5), + child: Column( + children: [ + TextFormField( + validator: (value) { + if (value!.isEmpty) { + return 'Password is required.'; + } + if (value.length < 8) { + return 'Password at least is 8 characters.'; + } + return null; + }, + obscureText: _hidePass, + controller: passwordController, + decoration: InputDecoration( + // icon: Icon( + // FontAwesomeIcons.starOfLife, + // size: 6 * _deviceBlockSize, + // ), + labelStyle: TextStyle( + fontWeight: FontWeight.w100, + fontSize: 4 * _deviceBlockSize, + ), + labelText: 'Password', + isDense: true, + contentPadding: EdgeInsets.symmetric( + vertical: 2, horizontal: 3), + // suffixIcon: InkWell( + // child: Icon(FontAwesomeIcons.eye), + // onTap: () { + // setState(() { + // _hidePass = !_hidePass; + // }); + // }, + // ), + ), + style: TextStyle( + fontWeight: FontWeight.w700, + fontSize: 5 * _deviceBlockSize, + ), + textInputAction: TextInputAction.done, + onFieldSubmitted: (_) { + _sendRePass(); + }, + keyboardType: TextInputType.visiblePassword, + ), + SizedBox( + height: 30, + ), + TextFormField( + validator: (value) { + if (value!.length < 8) { + return 'Password at least is 8 characters.'; + } + if (value != passwordController.text) { + return 'Password doesnt match!'; + } + return null; + }, + obscureText: _hideRePass, + controller: rePasswordController, + decoration: InputDecoration( + // icon: Icon( + // FontAwesomeIcons.starOfLife, + // size: 6 * _deviceBlockSize, + // ), + labelStyle: TextStyle( + fontWeight: FontWeight.w100, + fontSize: 4 * _deviceBlockSize, + ), + labelText: 'retype your new password', + isDense: true, + contentPadding: EdgeInsets.symmetric( + vertical: 2, horizontal: 3), + // suffixIcon: InkWell( + // child: Icon(FontAwesomeIcons.eye), + // onTap: () { + // setState(() { + // _hideRePass = !_hideRePass; + // }); + // }, + // ), + ), + style: TextStyle( + fontWeight: FontWeight.w700, + fontSize: 5 * _deviceBlockSize, + ), + textInputAction: TextInputAction.done, + onFieldSubmitted: (_) { + _sendRePass(); + }, + keyboardType: TextInputType.visiblePassword, + ), + SizedBox(height: 40), + Row( + children: [ + InkWell( + onTap: () => _sendRePass(), + child: Container( + width: 88 * _deviceBlockSize, + padding: EdgeInsets.all(10), + decoration: BoxDecoration( + color: Colors.black, + borderRadius: + BorderRadius.circular(7), + ), + child: Text( + 'Save New Password', + style: TextStyle( + color: Colors.white, + fontSize: 5 * _deviceBlockSize, + ), + textAlign: TextAlign.center, + ), + ), + ), + Spacer(), + ], + ), + SizedBox(height: 10), + ], + ), + ), + ], + ), + ) + : ConnectionErrorBox(), + selector: (_, connectivity) => connectivity.conStatus, + )), + ); + } +} diff --git a/lib/pages/home_screen.dart b/lib/pages/home_screen.dart index 860793e..004f360 100755 --- a/lib/pages/home_screen.dart +++ b/lib/pages/home_screen.dart @@ -372,7 +372,8 @@ class SelectionItem extends StatelessWidget { style: TextStyle( color: firstLineColor, fontSize: 5 * _deviceBlockSize, - letterSpacing: 3.5, + // letterSpacing: 3.5, + fontWeight: FontWeight.w700, ), ), Text( diff --git a/lib/pages/my_info_screen.dart b/lib/pages/my_info_screen.dart index 1cdef73..62714fb 100755 --- a/lib/pages/my_info_screen.dart +++ b/lib/pages/my_info_screen.dart @@ -7,8 +7,10 @@ import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:provider/provider.dart'; +import '../config/colors.dart'; import '../config/routes.dart'; import '../providers/auth.dart'; +import 'home_screen.dart'; class MyInfoScreen extends StatefulWidget { // static const route = '/MyInfoScreenRoute'; @@ -52,7 +54,7 @@ class _MyInfoScreenState extends State { appBar: AppBar( titleSpacing: -10, title: Text( - 'Dashboard', + 'Home', style: TextStyle( color: Colors.white, ), @@ -131,8 +133,28 @@ class _MyInfoScreenState extends State { icon: FontAwesomeIcons.envelope, inputType: TextInputType.emailAddress, ), - SizedBox( - height: 40, + SizedBox(height: 20), + SelectionItem( + firstLine: 'CHANGE PASSWORD', + secondLine: 'Set a new password', + firstLineColor: Colors.black, + backgroundColor: kLightGreyBackground, + onTap: () { + Navigator.of(context) + .popAndPushNamed(Routes.rePassScreen); + // Navigator.push( + // context, + // MaterialPageRoute( + // builder: (context) { + // return Consumer( + // builder: (ctx, auth, _) { + // return MyInfoScreen(); + // }, + // ); + // }, + // ), + // ) + }, ), Consumer(builder: (context, auth, _) { return InkWell( @@ -140,7 +162,7 @@ class _MyInfoScreenState extends State { padding: EdgeInsets.symmetric( horizontal: 60, vertical: 10), margin: EdgeInsets.only( - top: 50, bottom: 20), + top: 20, bottom: 20), width: double.infinity, decoration: BoxDecoration( color: Colors.black, diff --git a/lib/providers/auth.dart b/lib/providers/auth.dart index 4fc4ec3..24b33d1 100755 --- a/lib/providers/auth.dart +++ b/lib/providers/auth.dart @@ -82,7 +82,8 @@ class Auth with ChangeNotifier { } } - Future sendRePass(String password, String token) async { + Future sendRePass( + String password, String passwordConfirmation, String token) async { print(password); print(token); @@ -90,9 +91,12 @@ class Auth with ChangeNotifier { Uri.parse(Url.sendResetPass), body: { 'password': password, - 'password_confirmation': password, + 'password_confirmation': passwordConfirmation, + }, + headers: { + 'Authorization': User.token, + // 'X-Requested-With': 'XMLHttpRequest', }, - headers: {'Authorization': token, 'X-Requested-With': 'XMLHttpRequest'}, // headers: {'X-Requested-With': 'XMLHttpRequest'}, ); final responseData = json.decode(response.body); @@ -102,7 +106,8 @@ class Auth with ChangeNotifier { // return 'Done'; // } print(responseData); - if (responseData['status'] == 'Success') { + if (responseData['status'] == 'Success' && + responseData['message'] == 'Success Change Password') { return 'done'; } else { return 'error';