circle_app/circle_app/lib/app/splash/logic.dart

121 lines
3.4 KiB
Dart
Raw Normal View History

2023-08-15 16:48:14 +08:00
import 'dart:io';
import 'package:connectivity/connectivity.dart';
2023-08-15 16:48:14 +08:00
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
2023-08-05 10:42:53 +08:00
import 'package:flutter_native_splash/flutter_native_splash.dart';
import 'package:get/get.dart';
import '../../router/app_routers.dart';
2023-07-06 09:25:49 +08:00
import '../../util/SharedPreferencesHelper.dart';
2023-08-15 16:48:14 +08:00
import '../dialog/YesAgreementDialog.dart';
import '../select_circle/logic.dart';
import 'state.dart';
import '../../network/api.dart';
import '../../network/dio_manager.dart';
import '../../util/device.dart';
import '../../util/util.dart';
import '../login/login/logic.dart';
class SplashLogic extends GetxController {
final SplashState state = SplashState();
2023-08-05 10:42:53 +08:00
@override
void onReady() async {
// TODO: implement onReady
super.onReady();
loadConfig();
checkStatus();
2023-08-05 10:42:53 +08:00
}
loadConfig() async {
var data1 =
await DioManager.instance.get(url: Api.getCircleList, params: {});
var bean1 = BaseResponse<ConfigBean>.fromJson(
data1, (data1) => ConfigBean.fromJson(data1));
if (bean1.code == 200) {
configBean = bean1.data!;
configBean.genderMap.forEach((key, value) {
genderList.add(value);
});
configBean.orientationMap.forEach((key, value) {
orientationList.add(value);
});
configBean.roleMap.forEach((key, value) {
roleList.add(value);
});
}
}
checkStatus() async {
2023-08-05 10:42:53 +08:00
if ((await getAuthorization()).isEmpty) {
if (Platform.isIOS) {
2023-08-15 16:48:14 +08:00
pushLoginPage();
return;
}
bool isAgreemement = await getAgreemement();
if (!isAgreemement) {
2023-08-15 16:48:14 +08:00
showReportDialog();
} else {
2023-08-15 16:48:14 +08:00
pushLoginPage();
}
2023-08-05 10:42:53 +08:00
} else {
var data =
await DioManager.instance.put(url: Api.refreshToken, params: {});
2023-08-05 10:42:53 +08:00
var bean = BaseResponse<LoginData>.fromJson(
data, (data) => LoginData.fromJson(data));
if (bean.code == 200) {
2023-07-06 09:25:49 +08:00
SharedPreferencesHelper.getInstance().then((sharedPreferences) {
2023-08-05 10:42:53 +08:00
sharedPreferences.setString(SharedPreferencesHelper.AUTHORIZATION,
bean.data!.Authorization.toString());
2023-07-06 09:25:49 +08:00
});
Get.offNamed(AppRoutes.Home);
return;
} else if (bean.code == 30002) {
2023-07-06 09:25:49 +08:00
SharedPreferencesHelper.getInstance().then((sharedPreferences) {
2023-08-05 10:42:53 +08:00
sharedPreferences.setString(SharedPreferencesHelper.AUTHORIZATION,
bean.data!.Authorization.toString());
Get.offNamed(AppRoutes.Complete_materialPage);
2023-07-06 09:25:49 +08:00
});
return;
} else if (bean.code == 5000 ||
bean.code == 5001 ||
bean.code == 5002 ||
bean.code == 5003) {
2023-08-07 15:49:10 +08:00
pushLoginPage();
return;
}
2023-08-10 17:23:28 +08:00
showOKToast(bean.msg.toString());
2023-08-05 10:42:53 +08:00
if (bean.code == 500) {
await Future.delayed(Duration(seconds: 5));
onInit();
} else {
2024-05-14 15:14:52 +08:00
SharedPreferencesHelper sp =
await SharedPreferencesHelper.getInstance();
String token = sp.getString(SharedPreferencesHelper.AUTHORIZATION);
if (token.isNotEmpty) {
Get.offNamed(AppRoutes.Home);
} else {
pushLoginPage();
}
}
// Get.toNamed(AppRoutes.Home);
}
}
2023-08-15 16:48:14 +08:00
void showReportDialog() {
FlutterNativeSplash.remove();
showDialog(
context: Get.context!,
barrierDismissible: false,
builder: (BuildContext context) {
return YesAgreementDialog();
});
}
}