First step form implement loading

merge-requests/13/head
Elham Rababah 6 years ago
parent 4390e96270
commit c41669ec4e

@ -27,7 +27,7 @@ class MyApp extends StatelessWidget {
child: MaterialApp( child: MaterialApp(
title: 'Flutter Demo', title: 'Flutter Demo',
theme: ThemeData( theme: ThemeData(
primarySwatch: Colors.blue, primarySwatch: Colors.red,
primaryColor: Hexcolor('#B8382C'), primaryColor: Hexcolor('#B8382C'),
buttonColor: Hexcolor('#B8382C'), buttonColor: Hexcolor('#B8382C'),
fontFamily: 'WorkSans',), fontFamily: 'WorkSans',),

@ -1,11 +1,12 @@
import './screens/QR_reader_screen.dart'; import './screens/QR_reader_screen.dart';
import './screens/auth/change_password_screen.dart'; import './screens/auth/change_password_screen.dart';
import './screens/auth/login_screen.dart'; import './screens/auth/login_screen.dart';
import './screens/auth/verification_methods_screen.dart'; import './screens/auth/verification_methods_screen.dart';
import './screens/auth/verify_account_screen.dart'; import './screens/auth/verify_account_screen.dart';
import './screens/blood_bank_screen.dart'; import './screens/blood_bank_screen.dart';
import './screens/doctor_reply_screen.dart';
import './screens/dashboard_screen.dart'; import './screens/dashboard_screen.dart';
import './screens/doctor_reply_screen.dart';
import './screens/medicine/medicine_search_screen.dart'; import './screens/medicine/medicine_search_screen.dart';
import './screens/my_schedule_screen.dart'; import './screens/my_schedule_screen.dart';
import './screens/patients/patient_search_screen.dart'; import './screens/patients/patient_search_screen.dart';
@ -26,6 +27,7 @@ const String BLOOD_BANK = 'blood-bank';
const String DOCTOR_REPLY = 'doctor-reply'; const String DOCTOR_REPLY = 'doctor-reply';
const String MEDICINE_SEARCH = 'medicine-search'; const String MEDICINE_SEARCH = 'medicine-search';
const String SETTINGS = 'settings'; const String SETTINGS = 'settings';
const LOADER ='loader';
var routes = { var routes = {
HOME: (_) => DashboardScreen(), HOME: (_) => DashboardScreen(),

@ -1,6 +1,5 @@
import 'dart:async'; import 'dart:async';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
@ -9,6 +8,7 @@ import '../../util/dr_app_shared_pref.dart';
import '../../widgets/auth/auth_header.dart'; import '../../widgets/auth/auth_header.dart';
import '../../widgets/auth/known_user_login.dart'; import '../../widgets/auth/known_user_login.dart';
import '../../widgets/auth/login_form.dart'; import '../../widgets/auth/login_form.dart';
import '../../widgets/shared/app_scaffold_widget.dart';
import '../../widgets/shared/dr_app_circular_progress_Indeicator.dart'; import '../../widgets/shared/dr_app_circular_progress_Indeicator.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
@ -22,9 +22,10 @@ class _LoginsreenState extends State<Loginsreen> {
Future<SharedPreferences> _prefs = SharedPreferences.getInstance(); Future<SharedPreferences> _prefs = SharedPreferences.getInstance();
String platformImei; String platformImei;
Future<String> platformImeiFuture; Future<String> platformImeiFuture;
bool _isLoading = false;
Future<void> getSharedPref() async { Future<void> getSharedPref() async {
sharedPref.getString('platformImei').then((imei) { sharedPref.getString('platformImei').then((imei) {
platformImei = imei; platformImei = imei;
@ -39,11 +40,18 @@ class _LoginsreenState extends State<Loginsreen> {
}); });
} }
void changeLoadingStata(isLoading) {
setState(() {
_isLoading = isLoading;
});
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
getSharedPref(); getSharedPref();
return AppScaffold( return AppScaffold(
pageOnly: true, pageOnly: true,
isloading: _isLoading,
body: SafeArea( body: SafeArea(
child: ListView(children: <Widget>[ child: ListView(children: <Widget>[
FutureBuilder( FutureBuilder(
@ -63,12 +71,15 @@ class _LoginsreenState extends State<Loginsreen> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
(platformImei == null) (platformImei == null)
? Column( ? Column(
crossAxisAlignment: crossAxisAlignment:
CrossAxisAlignment.start, CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
AuthHeader(loginType.knownUser), AuthHeader(loginType.knownUser),
LoginForm(), LoginForm(
changeLoadingStata:
changeLoadingStata,
),
], ],
) )
: Column( : Column(

@ -20,9 +20,8 @@ DrAppToastMsg toastMsg = DrAppToastMsg();
Helpers helpers = Helpers(); Helpers helpers = Helpers();
class LoginForm extends StatefulWidget with DrAppToastMsg { class LoginForm extends StatefulWidget with DrAppToastMsg {
LoginForm({ LoginForm({this.changeLoadingStata});
Key key, final Function changeLoadingStata;
}) : super(key: key);
@override @override
_LoginFormState createState() => _LoginFormState(); _LoginFormState createState() => _LoginFormState();
@ -175,7 +174,7 @@ class _LoginFormState extends State<LoginForm> {
onPressed: () { onPressed: () {
// Navigator.of(context).pushNamed(VERIFICATION_METHODS); // Navigator.of(context).pushNamed(VERIFICATION_METHODS);
login(context, authProv); login(context, authProv, widget.changeLoadingStata);
}, },
textColor: Colors.white, textColor: Colors.white,
elevation: 0.0, elevation: 0.0,
@ -214,10 +213,13 @@ class _LoginFormState extends State<LoginForm> {
); );
} }
login(context, AuthProvider authProv) { login(context, AuthProvider authProv, Function changeLoadingStata) {
changeLoadingStata(true);
if (loginFormKey.currentState.validate()) { if (loginFormKey.currentState.validate()) {
loginFormKey.currentState.save(); loginFormKey.currentState.save();
authProv.login(userInfo).then((res) { authProv.login(userInfo).then((res) {
changeLoadingStata(false);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
// insertDeviceImei(res, authProv); // insertDeviceImei(res, authProv);
saveObjToString('loggedUser', res); saveObjToString('loggedUser', res);
@ -230,8 +232,11 @@ class _LoginFormState extends State<LoginForm> {
// Navigator.of(context).pushNamed(HOME); // Navigator.of(context).pushNamed(HOME);
}).catchError((err) { }).catchError((err) {
print('$err'); print('$err');
changeLoadingStata(false);
helpers.showErrorToast(); helpers.showErrorToast();
}); });
} else {
changeLoadingStata(false);
} }
} }
@ -315,8 +320,6 @@ class _LoginFormState extends State<LoginForm> {
}); });
} }
saveObjToString(String key, value) async { saveObjToString(String key, value) async {
sharedPref.setObj(key, value); sharedPref.setObj(key, value);
} }

@ -0,0 +1,50 @@
import 'package:flutter/material.dart';
import 'package:progress_hud_v2/progress_hud.dart';
class AppLoaderWidget extends StatefulWidget {
AppLoaderWidget({Key key, this.title}) : super(key: key);
final String title;
@override
_AppLoaderWidgetState createState() => new _AppLoaderWidgetState();
}
class _AppLoaderWidgetState extends State<AppLoaderWidget> {
ProgressHUD _progressHUD;
// bool _loading = false;
@override
void initState() {
super.initState();
_progressHUD = new ProgressHUD(
backgroundColor: Colors.black12,
color: Colors.black,
// containerColor: Colors.blue,
borderRadius: 5.0,
// text: 'Loading...',
);
}
@override
Widget build(BuildContext context) {
// void dismissProgressHUD() {
// setState(() {
// if (_loading) {
// _progressHUD.state.dismiss();
// } else {
// _progressHUD.state.show();
// }
// _loading = !_loading;
// });
// }
return Positioned(child: _progressHUD) ;
}
}

@ -1,10 +1,11 @@
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:flutter/material.dart';
import 'package:doctor_app_flutter/screens/patients/patients_screen.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
import '../../config/size_config.dart';
import '../../presentation/doctor_app_icons.dart'; import '../../presentation/doctor_app_icons.dart';
import '../../screens/patients/patients_screen.dart';
import '../../widgets/shared/app_drawer_widget.dart'; import '../../widgets/shared/app_drawer_widget.dart';
import 'package:flutter/material.dart'; import '../../widgets/shared/app_loader_widget.dart';
class AppScaffold extends StatelessWidget { class AppScaffold extends StatelessWidget {
bool pageOnly = false; bool pageOnly = false;
@ -16,6 +17,7 @@ class AppScaffold extends StatelessWidget {
bool showCurve = true; bool showCurve = true;
String appBarTitle = ''; String appBarTitle = '';
Widget body; Widget body;
bool isloading = false;
AppScaffold( AppScaffold(
{this.pageOnly, {this.pageOnly,
@ -25,7 +27,8 @@ class AppScaffold extends StatelessWidget {
this.showAppDrawer, this.showAppDrawer,
this.body, this.body,
this.showbg, this.showbg,
this.showCurve}); this.showCurve,
this.isloading = false});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -83,7 +86,7 @@ class AppScaffold extends StatelessWidget {
icon: Icon(Icons.apps), title: Text('Menu')) icon: Icon(Icons.apps), title: Text('Menu'))
]), ]),
body: (pageOnly == true || showCurve == false) body: (pageOnly == true || showCurve == false)
? body ? Stack(children: <Widget>[body, buildAppLoaderWidget(isloading)])
: Stack( : Stack(
children: <Widget>[ children: <Widget>[
ClipPath( ClipPath(
@ -95,10 +98,13 @@ class AppScaffold extends StatelessWidget {
Positioned( Positioned(
// key: , // key: ,
// top: SizeConfig.realScreenHeight * 0.10, // top: SizeConfig.realScreenHeight * 0.10,
child: body) child: body),
buildAppLoaderWidget(isloading)
], ],
)); ));
} }
}
Widget buildAppLoaderWidget(bool isloading) {
return isloading ? AppLoaderWidget() : Container();
}
}

@ -429,6 +429,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.4.0" version: "1.4.0"
progress_hud_v2:
dependency: "direct main"
description:
name: progress_hud_v2
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
protobuf: protobuf:
dependency: transitive dependency: transitive
description: description:

@ -30,7 +30,7 @@ dependencies:
flutter_flexible_toast: ^0.1.4 flutter_flexible_toast: ^0.1.4
local_auth: ^0.6.1+3 local_auth: ^0.6.1+3
http_interceptor: ^0.2.0 http_interceptor: ^0.2.0
progress_hud_v2: ^2.0.0
# The following adds the Cupertino Icons font to your application. # The following adds the Cupertino Icons font to your application.

Loading…
Cancel
Save