quick_login_helper.dart 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import 'dart:convert';
  2. import 'dart:io';
  3. import 'package:flutter/services.dart';
  4. import 'package:location/data/consts/build_config.dart';
  5. import 'package:location/data/consts/web_url.dart';
  6. import 'package:location/resource/assets.gen.dart';
  7. import 'package:location/utils/atmob_log.dart';
  8. import 'package:quickpass_yidun_flutter/quickpass_flutter_plugin.dart';
  9. class QuickLoginHelper {
  10. QuickLoginHelper._();
  11. static final String tag = 'QuickLoginHelper';
  12. static final String _businessId = BuildConfig.quickLoginBusinessId;
  13. static final String userAgreement = WebUrl.userAgreement;
  14. static final String privacyPolicy = WebUrl.privacyPolicy;
  15. static final QuickpassFlutterPlugin quickLoginPlugin =
  16. QuickpassFlutterPlugin();
  17. static Map<String, dynamic>? _configMap;
  18. static Future<void> init() {
  19. return quickLoginPlugin.init(_businessId).then((map) {
  20. bool result = map?['success'];
  21. AtmobLog.d(tag, 'init success:$result');
  22. });
  23. }
  24. static EventChannel getEventChannel() {
  25. return const EventChannel("yd_quicklogin_flutter_event_channel");
  26. }
  27. static void closeLoginAuthView() {
  28. quickLoginPlugin.closeLoginAuthView();
  29. }
  30. static Future<void> _setUiConfig() async {
  31. _configMap ??= await _getFileConfig();
  32. quickLoginPlugin.setUiConfig(_configMap);
  33. }
  34. static Future<Map<String, dynamic>> _getFileConfig() async {
  35. String file = "";
  36. if (Platform.isIOS) {
  37. file = Assets.config.iosQuickLoginConfig;
  38. } else if (Platform.isAndroid) {
  39. file = Assets.config.androidQuickLoginConfig;
  40. }
  41. return rootBundle.loadString(file).then((value) {
  42. return {"uiConfig": json.decode(value)};
  43. });
  44. }
  45. static void preFetchNumber({
  46. required void Function(String token) onSuccess,
  47. required void Function(String errorMsg) onError,
  48. }) async {
  49. Map<dynamic, dynamic>? map = await quickLoginPlugin.preFetchNumber();
  50. if (map?['success'] == true) {
  51. var ydToken = map?['token'];
  52. AtmobLog.d(tag, 'preFetchNumber success token:$ydToken');
  53. onSuccess(ydToken);
  54. } else {
  55. //获取预设手机号失败
  56. var ydToken = map?['token'];
  57. var errorMsg = map?['errorMsg'];
  58. AtmobLog.e(tag, "preFetchNumber error token:$ydToken,errorMsg:$errorMsg");
  59. onError(errorMsg);
  60. }
  61. }
  62. static void onePassLogin({
  63. required void Function(String ydToken, String accessToken) onSuccess,
  64. required void Function(String errorMsg) onError,
  65. }) async {
  66. try {
  67. await _setUiConfig();
  68. Map<dynamic, dynamic>? map = await quickLoginPlugin.onePassLogin();
  69. if (map?["success"]) {
  70. var accessToken = map?["accessToken"];
  71. var ydToken = map?["ydToken"];
  72. AtmobLog.d(tag,
  73. "onePassLogin success ydToken:$ydToken, accessToken:$accessToken");
  74. onSuccess(ydToken, accessToken);
  75. } else {
  76. var errorMsg = map?["msg"];
  77. AtmobLog.e(tag, "onePassLogin error msg:$errorMsg");
  78. onError(errorMsg);
  79. }
  80. closeLoginAuthView();
  81. } catch (e) {
  82. onError(e.toString());
  83. closeLoginAuthView();
  84. }
  85. }
  86. static void dispose() {
  87. _configMap = null;
  88. }
  89. }