Commit 49386a19 authored by Dio Maulana's avatar Dio Maulana

add easy loading before hit api

parent 96c36301
...@@ -3,6 +3,7 @@ import 'dart:convert'; ...@@ -3,6 +3,7 @@ import 'dart:convert';
import 'package:tour_travel_agr/api/response_api.dart'; import 'package:tour_travel_agr/api/response_api.dart';
import 'package:tour_travel_agr/helper/prefs.dart'; import 'package:tour_travel_agr/helper/prefs.dart';
import 'package:tour_travel_agr/main.dart'; import 'package:tour_travel_agr/main.dart';
import 'package:tour_travel_agr/resource/routes.dart';
import 'package:tour_travel_agr/resource/strings.dart'; import 'package:tour_travel_agr/resource/strings.dart';
class Api { class Api {
...@@ -84,9 +85,16 @@ class Api { ...@@ -84,9 +85,16 @@ class Api {
static Future<ApiResponse> forgotPassword(String phone) async { static Future<ApiResponse> forgotPassword(String phone) async {
String apiUrl = "$baseUrl${endPoint}forgot_password"; String apiUrl = "$baseUrl${endPoint}forgot_password";
String baseUrlToReset = '';
baseUrlToReset += "${Uri.base.scheme}://${Uri.base.host}";
if (Uri.base.port != 80) {
baseUrlToReset += ":${Uri.base.port}";
}
baseUrlToReset += "${Routes.resetPasswordRoute}/";
try { try {
Map<String, dynamic> data = { Map<String, dynamic> data = {
"mobile_phone": phone, "mobile_phone": phone,
"base_url": baseUrlToReset,
}; };
String bodies = jsonEncode(data); String bodies = jsonEncode(data);
dynamic jsonObject = httpRequest( dynamic jsonObject = httpRequest(
...@@ -179,4 +187,35 @@ class Api { ...@@ -179,4 +187,35 @@ class Api {
return ApiResponse(error: true, msg: Strings.serverError); return ApiResponse(error: true, msg: Strings.serverError);
} }
} }
static Future<ApiResponse> dataForgotPassword(String idPath) async {
String apiUrl = "$baseUrl${endPoint}data_forgot_password";
try {
Map<String, dynamic> data = {
"param_id": idPath,
};
String bodies = jsonEncode(data);
dynamic jsonObject = await httpRequest(
typePost,
apiUrl,
'dataForgotPassword',
bodies: bodies,
);
if (jsonObject == false) {
return ApiResponse(error: true, msg: Strings.cantConnectToServer);
} else {
if (jsonObject['status'] == 'ok') {
return ApiResponse(error: false, msg: "Success");
} else {
return ApiResponse(
error: true,
msg: jsonObject['msg'],
);
}
}
} catch (e) {
return ApiResponse(error: true, msg: Strings.serverError);
}
}
} }
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:tour_travel_agr/api/all_api.dart'; import 'package:tour_travel_agr/api/all_api.dart';
import 'package:tour_travel_agr/helper/components_widget/password_input.dart'; import 'package:tour_travel_agr/helper/components_widget/password_input.dart';
import 'package:tour_travel_agr/helper/components_widget/widget_button.dart'; import 'package:tour_travel_agr/helper/components_widget/widget_button.dart';
...@@ -9,6 +10,7 @@ import 'package:tour_travel_agr/resource/assets.dart'; ...@@ -9,6 +10,7 @@ import 'package:tour_travel_agr/resource/assets.dart';
import 'package:tour_travel_agr/resource/colors.dart'; import 'package:tour_travel_agr/resource/colors.dart';
import 'package:tour_travel_agr/resource/routes.dart'; import 'package:tour_travel_agr/resource/routes.dart';
import 'package:tour_travel_agr/resource/size.dart'; import 'package:tour_travel_agr/resource/size.dart';
import 'package:tour_travel_agr/resource/strings.dart';
import 'package:tour_travel_agr/resource/style.dart'; import 'package:tour_travel_agr/resource/style.dart';
class LoginView extends StatelessWidget { class LoginView extends StatelessWidget {
...@@ -157,12 +159,17 @@ class _BodyWidgetState extends State<BodyWidget> { ...@@ -157,12 +159,17 @@ class _BodyWidgetState extends State<BodyWidget> {
colorButton: buttonLoginActive colorButton: buttonLoginActive
? ColorManager.primary ? ColorManager.primary
: Colors.grey, : Colors.grey,
onTap: () { onTap: () async {
if (buttonLoginActive) { if (buttonLoginActive) {
await EasyLoading.show(
status: Strings.pleaseWait,
maskType: EasyLoadingMaskType.none,
);
Api.login( Api.login(
widget.whatsappController.text, widget.whatsappController.text,
widget.passwordController.text, widget.passwordController.text,
).then((apiResponse) { ).then((apiResponse) {
EasyLoading.dismiss();
if (apiResponse.error) { if (apiResponse.error) {
modalDialogGlobal( modalDialogGlobal(
context: context, context: context,
......
// ignore_for_file: sized_box_for_whitespace // ignore_for_file: sized_box_for_whitespace
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:tour_travel_agr/api/all_api.dart'; import 'package:tour_travel_agr/api/all_api.dart';
import 'package:tour_travel_agr/helper/argument_route/verification_otp.dart'; import 'package:tour_travel_agr/helper/argument_route/verification_otp.dart';
import 'package:tour_travel_agr/helper/components_widget/custom_appbar.dart'; import 'package:tour_travel_agr/helper/components_widget/custom_appbar.dart';
...@@ -12,6 +13,7 @@ import 'package:tour_travel_agr/helper/widget_responsive.dart'; ...@@ -12,6 +13,7 @@ import 'package:tour_travel_agr/helper/widget_responsive.dart';
import 'package:tour_travel_agr/resource/colors.dart'; import 'package:tour_travel_agr/resource/colors.dart';
import 'package:tour_travel_agr/resource/routes.dart'; import 'package:tour_travel_agr/resource/routes.dart';
import 'package:tour_travel_agr/resource/size.dart'; import 'package:tour_travel_agr/resource/size.dart';
import 'package:tour_travel_agr/resource/strings.dart';
import 'package:tour_travel_agr/resource/style.dart'; import 'package:tour_travel_agr/resource/style.dart';
class RegisterView extends StatefulWidget { class RegisterView extends StatefulWidget {
...@@ -152,53 +154,69 @@ class _RegisterViewState extends State<RegisterView> { ...@@ -152,53 +154,69 @@ class _RegisterViewState extends State<RegisterView> {
colorButton: buttonRregisterActive colorButton: buttonRregisterActive
? ColorManager.primary ? ColorManager.primary
: Colors.grey, : Colors.grey,
onTap: () { onTap: () async {
if (buttonRregisterActive) { if (buttonRregisterActive) {
// if (passwordController.text != if (nameController.text.isEmpty ||
// confirmPasswordController.text) { nikController.text.isEmpty ||
// modalDialogGlobal( noHpController.text.isEmpty ||
// context: context, passwordController.text.isEmpty) {
// size: MediaQuery.of(context).size, modalDialogGlobal(
// title: "Gagal", context: context,
// contentBody: "Password tidak sama", size: MediaQuery.of(context).size,
// buttonText: "Ok", title: "Informasi",
// tapButton: () => Navigator.pop(context), contentBody: "Semua field wajib diisi",
// ); buttonText: "Ok",
// } tapButton: () => Navigator.pop(context),
// Api.register( );
// nameController.text, return;
// nikController.text, }
// noHpController.text, if (passwordController.text !=
// passwordController.text, confirmPasswordController.text) {
// confirmPasswordController.text, // ignore: use_build_context_synchronously
// ).then((apiResponse) { modalDialogGlobal(
// if (apiResponse.error) { context: context,
// modalDialogGlobal( size: MediaQuery.of(context).size,
// context: context, title: "Gagal",
// size: MediaQuery.of(context).size, contentBody: "Password tidak sama",
// title: "Gagal", buttonText: "Ok",
// contentBody: apiResponse.msg, tapButton: () => Navigator.pop(context),
// buttonText: "Ok", );
// tapButton: () => Navigator.pop(context), return;
// ); }
// return;
// }
// Navigator.pushNamed( await EasyLoading.show(
// context, status: Strings.pleaseWait,
// Routes.verificationRoute, maskType: EasyLoadingMaskType.none,
// arguments: apiResponse.data['register_id'],
// );
// });
Navigator.pushNamed(
context,
Routes.verificationRoute,
arguments: VerificationArguments(
id: "ASAS",
phone: noHpController.text,
),
); );
Api.register(
nameController.text,
nikController.text,
noHpController.text,
passwordController.text,
confirmPasswordController.text,
).then((apiResponse) {
EasyLoading.dismiss();
if (apiResponse.error) {
modalDialogGlobal(
context: context,
size: MediaQuery.of(context).size,
title: "Gagal",
contentBody: apiResponse.msg,
buttonText: "Ok",
tapButton: () => Navigator.pop(context),
);
return;
}
Navigator.pushNamed(
context,
Routes.verificationRoute,
arguments: VerificationArguments(
id: "ASAS",
phone: noHpController.text,
),
);
});
} }
}, },
), ),
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:tour_travel_agr/helper/argument_route/error_arguments.dart';
import 'package:tour_travel_agr/helper/argument_route/verification_otp.dart'; import 'package:tour_travel_agr/helper/argument_route/verification_otp.dart';
import 'package:tour_travel_agr/main.dart'; import 'package:tour_travel_agr/main.dart';
import 'package:tour_travel_agr/page/error.dart';
import 'package:tour_travel_agr/page/history/history.dart'; import 'package:tour_travel_agr/page/history/history.dart';
import 'package:tour_travel_agr/page/profile/change_password/change_password.dart'; import 'package:tour_travel_agr/page/profile/change_password/change_password.dart';
import 'package:tour_travel_agr/page/forgot_password/forgot_password.dart'; import 'package:tour_travel_agr/page/forgot_password/forgot_password.dart';
...@@ -15,6 +17,7 @@ import 'package:tour_travel_agr/page/reimbursement/reimbursement.dart'; ...@@ -15,6 +17,7 @@ import 'package:tour_travel_agr/page/reimbursement/reimbursement.dart';
import 'package:tour_travel_agr/page/reset_password/reset_password.dart'; import 'package:tour_travel_agr/page/reset_password/reset_password.dart';
import 'package:tour_travel_agr/page/reset_password/reset_success.dart'; import 'package:tour_travel_agr/page/reset_password/reset_success.dart';
import 'package:tour_travel_agr/page/splash/splash.dart'; import 'package:tour_travel_agr/page/splash/splash.dart';
import 'package:tour_travel_agr/resource/strings.dart';
class Routes { class Routes {
static const String splashRoute = "/splash"; static const String splashRoute = "/splash";
...@@ -30,6 +33,8 @@ class Routes { ...@@ -30,6 +33,8 @@ class Routes {
static const String reimburseRoute = "/reimbursement"; static const String reimburseRoute = "/reimbursement";
static const String historyRoute = "/history"; static const String historyRoute = "/history";
static const String resetPasswordSuccess = "/reset-success"; static const String resetPasswordSuccess = "/reset-success";
static const String errorRoute = "/error";
static const String notFoundRoute = "/404";
} }
class RouteGenerator { class RouteGenerator {
...@@ -53,6 +58,16 @@ class RouteGenerator { ...@@ -53,6 +58,16 @@ class RouteGenerator {
nameRoute: Routes.verificationRoute, nameRoute: Routes.verificationRoute,
routeSettings: routeSettings, routeSettings: routeSettings,
); );
} else if (routeSettings.name == Routes.errorRoute) {
ErrorWidgetArguments args =
routeSettings.arguments as ErrorWidgetArguments;
return pageRouteCustom(
ErrorWidgetView(
messageError: args.errorMessage,
),
nameRoute: Routes.errorRoute,
routeSettings: routeSettings,
);
} else if (routeSettings.name == Routes.forgotPasswordRoute) { } else if (routeSettings.name == Routes.forgotPasswordRoute) {
return pageRouteCustom(const ForgotPasswordView(), return pageRouteCustom(const ForgotPasswordView(),
nameRoute: Routes.forgotPasswordRoute); nameRoute: Routes.forgotPasswordRoute);
...@@ -89,7 +104,13 @@ class RouteGenerator { ...@@ -89,7 +104,13 @@ class RouteGenerator {
return pageRouteCustom(const ResetPasswrodSuccessView(), return pageRouteCustom(const ResetPasswrodSuccessView(),
nameRoute: Routes.resetPasswordSuccess); nameRoute: Routes.resetPasswordSuccess);
} else { } else {
return unDefinedRoute(); return pageRouteCustom(
ErrorWidgetView(
messageError: Strings.notFoundPage,
),
nameRoute: Routes.notFoundRoute,
routeSettings: routeSettings,
);
} }
} }
...@@ -119,6 +140,19 @@ class RouteGenerator { ...@@ -119,6 +140,19 @@ class RouteGenerator {
settings: RouteSettings(name: nameRoute.replaceFirst("/", "")), settings: RouteSettings(name: nameRoute.replaceFirst("/", "")),
); );
} }
if (nameRoute == Routes.errorRoute) {
ErrorWidgetArguments args =
routeSettings!.arguments as ErrorWidgetArguments;
return PageRouteBuilder(
pageBuilder: (context, a, b) => ErrorWidgetView(
messageError: args.errorMessage,
),
transitionDuration: Duration.zero,
reverseTransitionDuration: Duration.zero,
settings: RouteSettings(name: nameRoute.replaceFirst("/", "")),
);
}
return PageRouteBuilder( return PageRouteBuilder(
pageBuilder: (context, a, b) => target, pageBuilder: (context, a, b) => target,
transitionDuration: Duration.zero, transitionDuration: Duration.zero,
......
...@@ -13,4 +13,5 @@ class Strings { ...@@ -13,4 +13,5 @@ class Strings {
static String serverError = "Something wrong with our server, refresh page"; static String serverError = "Something wrong with our server, refresh page";
static String succesGetData = "Success get data"; static String succesGetData = "Success get data";
static String pleaseWait = "Please wait..."; static String pleaseWait = "Please wait...";
static String notFoundPage = 'Halaman yang anda cari tidak ditemukan';
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment