Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 
 
 

75 Zeilen
2.5 KiB

  1. import 'package:flutter/foundation.dart'; // برای شناسایی پلتفرم
  2. import 'package:dio/dio.dart';
  3. import 'package:qadirneyriz/config/config.dart';
  4. import 'package:qadirneyriz/main.dart';
  5. import 'package:qadirneyriz/setting/setting.dart';
  6. import 'package:qadirneyriz/utils/result/result.dart';
  7. class AuthServices {
  8. Future<Result?> loginApi({
  9. required String mobile,
  10. String? password,
  11. String? otp,
  12. }) async {
  13. String? token;
  14. token = await messaging.getToken();
  15. assert(password != null || otp != null);
  16. try {
  17. Map<String, String> headers = {"Accept": "application/json"};
  18. FormData formData;
  19. formData = password != null
  20. ? FormData.fromMap(
  21. {"mobile": mobile, "password": password, "device_id": token})
  22. : FormData.fromMap(
  23. {"mobile": mobile, "otp": otp, "device_id": token});
  24. print('${formData.fields} resData');
  25. final res = await Dio().post(
  26. "${config.network.baseUrl}login?lang=${setting.userLocalDb.getUser().language}",
  27. data: formData,
  28. options: Options(headers: headers));
  29. if (res.statusCode == 200 || res.statusCode == 201) {
  30. setting.userLocalDb.saveUserField('token', res.data['token']);
  31. setting.userLocalDb.saveUserField('mobile', res.data['mobile']);
  32. setting.userLocalDb.saveUserField('name', res.data['name']);
  33. setting.userLocalDb.saveUserField('role', res.data['role']);
  34. setting.userLocalDb.saveUserField('access', res.data['access']);
  35. return Result(isOk: true, message: res.data['msg']);
  36. }
  37. } on DioException catch (e) {
  38. print(e);
  39. return Result(
  40. isOk: false,
  41. errors: e.response?.data['errors'],
  42. message: e.response?.data['msg']);
  43. }
  44. return const Result(isOk: false);
  45. }
  46. Future<Result?> sendOtpApi({required String mobile}) async {
  47. try {
  48. Map<String, String> headers = {"Accept": "application/json"};
  49. FormData formData = FormData.fromMap({"mobile": mobile});
  50. final res = await Dio().post(
  51. "${config.network.baseUrl}sendOtp?lang=${setting.userLocalDb.getUser().language}",
  52. data: formData,
  53. options: Options(headers: headers));
  54. if (res.statusCode == 200 || res.statusCode == 201) {
  55. return Result(isOk: true, message: res.data['msg']);
  56. }
  57. } on DioException catch (e) {
  58. return Result(
  59. isOk: false,
  60. errors: e.response?.data['errors'],
  61. message: e.response?.data['msg']);
  62. }
  63. return const Result(isOk: false);
  64. }
  65. }