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 ForgetPassScreen extends StatefulWidget { // static const route = '/HomeScreen'; @override State createState() { return _ForgetPassScreenState(); } } class _ForgetPassScreenState extends State { final _form = GlobalKey(); bool _isLoading = false; final cellNumberController = TextEditingController(); @override void initState() { cellNumberController.text = ''; super.initState(); } @override void dispose() { super.dispose(); } void _showDialog(String message) { showDialog( context: context, builder: (ctx) => AlertDialog( title: Text('Error'), content: Text(message), actions: [ FlatButton( child: Text('Ok'), onPressed: () { Navigator.of(ctx).pop(); }, ), ], ), ); } void _requestCode() async { if (!_form.currentState.validate()) { return; } _form.currentState.save(); setState(() { _isLoading = true; }); // try { await Provider.of(context) .requestCode( cellNumberController.text, ) .then( (result) { if (result == 'NotUser') { _showDialog('User Not Found!!!'); setState( () { _isLoading = false; }, ); } else{ // _showDialog('User or password incorrect!'); Navigator.of(context).popAndPushNamed(Routes.sendCodeScreen); // setState( // () { // _isLoading = false; // }, // ); } }, ); } @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 Scaffold( appBar: AppBar( centerTitle: true, title: Text('CSSD'), ), body: Selector( builder: (ctx, value, _) => value != 'offline' ? _isLoading ? Center( child: CircularProgressIndicator(), ) : Form( key: _form, child: ListView( padding: EdgeInsets.symmetric(horizontal: 20), children: [ Container( padding: EdgeInsets.symmetric(vertical: 20), child: Text( 'FORGET PASSWORD', textAlign: TextAlign.left, style: TextStyle( color: Colors.black, fontSize: 5 * _deviceBlockSize, letterSpacing: 3, fontWeight: FontWeight.w700, ), ), ), TextFormField( validator: (value) { if (value.isEmpty) { return 'Cell number is required.'; } RegExp regExp = RegExp(r'^09[0,1,2,3,9]{1}[0-9]{8}$'); if (!regExp.hasMatch(value)) { return 'Enter a valid cell number'; } return null; }, controller: cellNumberController, decoration: InputDecoration( icon: Icon( Icons.call, size: 6 * _deviceBlockSize, ), labelStyle: TextStyle( fontWeight: FontWeight.w100, fontSize: 4 * _deviceBlockSize, ), labelText: 'Cell Number', isDense: true, contentPadding: EdgeInsets.symmetric( vertical: 2, horizontal: 3), ), style: TextStyle( fontWeight: FontWeight.w700, fontSize: 5 * _deviceBlockSize, ), keyboardType: TextInputType.phone, textInputAction: TextInputAction.next, onSaved: (value) { cellNumberController.text = value; }, ), SizedBox(height: 40), Row( children: [ InkWell( onTap: () => _requestCode(), child: Container( width: 40 * _deviceBlockSize, padding: EdgeInsets.symmetric( horizontal: 5 * _deviceBlockSize, vertical: 10, ), // margin: // EdgeInsets.symmetric(horizontal: 35, vertical: 15), decoration: BoxDecoration( gradient: LinearGradient( colors: [Colors.blue, Colors.green], ), borderRadius: BorderRadius.circular(7), ), child: Text( 'Request Code', style: TextStyle(color: Colors.white), ), ), ), Spacer(), ], ), SizedBox(height: 10), ], ), ) : ConnectionErrorBox(), selector: (_, connectivity) => connectivity.conStatus, ), ); } }