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';
import 'package:tour_travel_agr/api/response_api.dart';
import 'package:tour_travel_agr/helper/prefs.dart';
import 'package:tour_travel_agr/main.dart';
import 'package:tour_travel_agr/resource/routes.dart';
import 'package:tour_travel_agr/resource/strings.dart';
class Api {
......@@ -84,9 +85,16 @@ class Api {
static Future<ApiResponse> forgotPassword(String phone) async {
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 {
Map<String, dynamic> data = {
"mobile_phone": phone,
"base_url": baseUrlToReset,
};
String bodies = jsonEncode(data);
dynamic jsonObject = httpRequest(
......@@ -179,4 +187,35 @@ class Api {
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_easyloading/flutter_easyloading.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/widget_button.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/routes.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';
class LoginView extends StatelessWidget {
......@@ -157,12 +159,17 @@ class _BodyWidgetState extends State<BodyWidget> {
colorButton: buttonLoginActive
? ColorManager.primary
: Colors.grey,
onTap: () {
onTap: () async {
if (buttonLoginActive) {
await EasyLoading.show(
status: Strings.pleaseWait,
maskType: EasyLoadingMaskType.none,
);
Api.login(
widget.whatsappController.text,
widget.passwordController.text,
).then((apiResponse) {
EasyLoading.dismiss();
if (apiResponse.error) {
modalDialogGlobal(
context: context,
......
// ignore_for_file: sized_box_for_whitespace
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/helper/argument_route/verification_otp.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';
import 'package:tour_travel_agr/resource/colors.dart';
import 'package:tour_travel_agr/resource/routes.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';
class RegisterView extends StatefulWidget {
......@@ -152,44 +154,59 @@ class _RegisterViewState extends State<RegisterView> {
colorButton: buttonRregisterActive
? ColorManager.primary
: Colors.grey,
onTap: () {
onTap: () async {
if (buttonRregisterActive) {
// if (passwordController.text !=
// confirmPasswordController.text) {
// modalDialogGlobal(
// context: context,
// size: MediaQuery.of(context).size,
// title: "Gagal",
// contentBody: "Password tidak sama",
// buttonText: "Ok",
// tapButton: () => Navigator.pop(context),
// );
// }
// Api.register(
// nameController.text,
// nikController.text,
// noHpController.text,
// passwordController.text,
// confirmPasswordController.text,
// ).then((apiResponse) {
// if (apiResponse.error) {
// modalDialogGlobal(
// context: context,
// size: MediaQuery.of(context).size,
// title: "Gagal",
// contentBody: apiResponse.msg,
// buttonText: "Ok",
// tapButton: () => Navigator.pop(context),
// );
// return;
// }
if (nameController.text.isEmpty ||
nikController.text.isEmpty ||
noHpController.text.isEmpty ||
passwordController.text.isEmpty) {
modalDialogGlobal(
context: context,
size: MediaQuery.of(context).size,
title: "Informasi",
contentBody: "Semua field wajib diisi",
buttonText: "Ok",
tapButton: () => Navigator.pop(context),
);
return;
}
if (passwordController.text !=
confirmPasswordController.text) {
// ignore: use_build_context_synchronously
modalDialogGlobal(
context: context,
size: MediaQuery.of(context).size,
title: "Gagal",
contentBody: "Password tidak sama",
buttonText: "Ok",
tapButton: () => Navigator.pop(context),
);
return;
}
// Navigator.pushNamed(
// context,
// Routes.verificationRoute,
// arguments: apiResponse.data['register_id'],
// );
// });
await EasyLoading.show(
status: Strings.pleaseWait,
maskType: EasyLoadingMaskType.none,
);
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,
......@@ -199,6 +216,7 @@ class _RegisterViewState extends State<RegisterView> {
phone: noHpController.text,
),
);
});
}
},
),
......
import 'package:flutter/material.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/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/profile/change_password/change_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';
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/splash/splash.dart';
import 'package:tour_travel_agr/resource/strings.dart';
class Routes {
static const String splashRoute = "/splash";
......@@ -30,6 +33,8 @@ class Routes {
static const String reimburseRoute = "/reimbursement";
static const String historyRoute = "/history";
static const String resetPasswordSuccess = "/reset-success";
static const String errorRoute = "/error";
static const String notFoundRoute = "/404";
}
class RouteGenerator {
......@@ -53,6 +58,16 @@ class RouteGenerator {
nameRoute: Routes.verificationRoute,
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) {
return pageRouteCustom(const ForgotPasswordView(),
nameRoute: Routes.forgotPasswordRoute);
......@@ -89,7 +104,13 @@ class RouteGenerator {
return pageRouteCustom(const ResetPasswrodSuccessView(),
nameRoute: Routes.resetPasswordSuccess);
} else {
return unDefinedRoute();
return pageRouteCustom(
ErrorWidgetView(
messageError: Strings.notFoundPage,
),
nameRoute: Routes.notFoundRoute,
routeSettings: routeSettings,
);
}
}
......@@ -119,6 +140,19 @@ class RouteGenerator {
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(
pageBuilder: (context, a, b) => target,
transitionDuration: Duration.zero,
......
......@@ -13,4 +13,5 @@ class Strings {
static String serverError = "Something wrong with our server, refresh page";
static String succesGetData = "Success get data";
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