First step form implement loading

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

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

@ -1,11 +1,12 @@
import './screens/QR_reader_screen.dart';
import './screens/auth/change_password_screen.dart';
import './screens/auth/login_screen.dart';
import './screens/auth/verification_methods_screen.dart';
import './screens/auth/verify_account_screen.dart';
import './screens/blood_bank_screen.dart';
import './screens/doctor_reply_screen.dart';
import './screens/dashboard_screen.dart';
import './screens/doctor_reply_screen.dart';
import './screens/medicine/medicine_search_screen.dart';
import './screens/my_schedule_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 MEDICINE_SEARCH = 'medicine-search';
const String SETTINGS = 'settings';
const LOADER ='loader';
var routes = {
HOME: (_) => DashboardScreen(),

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

@ -20,9 +20,8 @@ DrAppToastMsg toastMsg = DrAppToastMsg();
Helpers helpers = Helpers();
class LoginForm extends StatefulWidget with DrAppToastMsg {
LoginForm({
Key key,
}) : super(key: key);
LoginForm({this.changeLoadingStata});
final Function changeLoadingStata;
@override
_LoginFormState createState() => _LoginFormState();
@ -175,7 +174,7 @@ class _LoginFormState extends State<LoginForm> {
onPressed: () {
// Navigator.of(context).pushNamed(VERIFICATION_METHODS);
login(context, authProv);
login(context, authProv, widget.changeLoadingStata);
},
textColor: Colors.white,
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()) {
loginFormKey.currentState.save();
authProv.login(userInfo).then((res) {
changeLoadingStata(false);
if (res['MessageStatus'] == 1) {
// insertDeviceImei(res, authProv);
saveObjToString('loggedUser', res);
@ -230,8 +232,11 @@ class _LoginFormState extends State<LoginForm> {
// Navigator.of(context).pushNamed(HOME);
}).catchError((err) {
print('$err');
changeLoadingStata(false);
helpers.showErrorToast();
});
} else {
changeLoadingStata(false);
}
}
@ -315,8 +320,6 @@ class _LoginFormState extends State<LoginForm> {
});
}
saveObjToString(String key, value) async {
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:doctor_app_flutter/screens/patients/patients_screen.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import '../../config/size_config.dart';
import '../../presentation/doctor_app_icons.dart';
import '../../screens/patients/patients_screen.dart';
import '../../widgets/shared/app_drawer_widget.dart';
import 'package:flutter/material.dart';
import '../../widgets/shared/app_loader_widget.dart';
class AppScaffold extends StatelessWidget {
bool pageOnly = false;
@ -16,6 +17,7 @@ class AppScaffold extends StatelessWidget {
bool showCurve = true;
String appBarTitle = '';
Widget body;
bool isloading = false;
AppScaffold(
{this.pageOnly,
@ -25,7 +27,8 @@ class AppScaffold extends StatelessWidget {
this.showAppDrawer,
this.body,
this.showbg,
this.showCurve});
this.showCurve,
this.isloading = false});
@override
Widget build(BuildContext context) {
@ -83,7 +86,7 @@ class AppScaffold extends StatelessWidget {
icon: Icon(Icons.apps), title: Text('Menu'))
]),
body: (pageOnly == true || showCurve == false)
? body
? Stack(children: <Widget>[body, buildAppLoaderWidget(isloading)])
: Stack(
children: <Widget>[
ClipPath(
@ -95,10 +98,13 @@ class AppScaffold extends StatelessWidget {
Positioned(
// key: ,
// 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"
source: hosted
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:
dependency: transitive
description:

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

Loading…
Cancel
Save