import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:tangheem/exceptions/api_exception.dart'; import 'package:tangheem/ui/dialogs/loading_dialog.dart'; import 'colors.dart'; class Utils { static bool _isLoadingVisible = false; static bool get isLoading => _isLoadingVisible; static void showToast(String message) { Fluttertoast.showToast( msg: message, toastLength: Toast.LENGTH_SHORT, gravity: ToastGravity.BOTTOM, timeInSecForIosWeb: 1, backgroundColor: Colors.black54, textColor: Colors.white, fontSize: 16.0); } static void showLoading(BuildContext context) { WidgetsBinding.instance.addPostFrameCallback((_) { _isLoadingVisible = true; showDialog( context: context, barrierColor: ColorConsts.primaryBlack.withOpacity(0.5), builder: (BuildContext context) => LoadingDialog(), ).then((value) { _isLoadingVisible = false; }); }); } static void hideLoading(BuildContext context) { if (_isLoadingVisible) { _isLoadingVisible = false; Navigator.of(context).pop(); } _isLoadingVisible = false; } static void handleException(dynamic exception, Function(String) onErrorMessage) { String errorMessage; if (exception is APIException) { if (exception.message == APIException.UNAUTHORIZED) { return; } else { var message = exception.error?.errorMessage; if (message == null) { message = exception.message; } errorMessage = message; } } else { errorMessage = APIException.UNKNOWN; } if (onErrorMessage != null) { onErrorMessage(errorMessage); } else { showToast(errorMessage); } } }