180 lines
5.0 KiB
Dart
180 lines
5.0 KiB
Dart
import 'dart:async';
|
|
import 'dart:io';
|
|
|
|
import 'package:flutter/cupertino.dart';
|
|
import 'package:flutter/services.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:wallpaperx/common/components/dialog/remind_dialog.dart';
|
|
import 'package:wallpaperx/common/components/easy_loading.dart';
|
|
import 'package:wallpaperx/common/utils/local_path_util.dart';
|
|
import 'package:wallpaperx/common/utils/shared_util.dart';
|
|
import 'package:wallpaperx/entity/userinfo_model.dart';
|
|
import 'package:wallpaperx/generated/assets.dart';
|
|
import 'package:wallpaperx/page/home/home_controller.dart';
|
|
import 'package:wallpaperx/res/values/strings.dart';
|
|
import 'package:wallpaperx/routes/app_pages.dart';
|
|
import 'package:share_plus/share_plus.dart';
|
|
|
|
class SettingsController extends GetxController {
|
|
final privacyUrlAndroid = 'https://wallpapergenie.mystrikingly.com/privacy';
|
|
final termsUrlAndroid = 'https://wallpapergenie.mystrikingly.com/terms';
|
|
|
|
final privacyUrlIOS = 'https://wallpapergenie.mystrikingly.com/privacy';
|
|
final termsUrlIOS = 'https://wallpapergenie.mystrikingly.com/terms';
|
|
|
|
final options = [
|
|
'AI preferences',
|
|
'Privacy Policy',
|
|
'Terms of Service',
|
|
'Feedback',
|
|
'About',
|
|
'Share',
|
|
"log Out",
|
|
"Delete Account"
|
|
];
|
|
|
|
late bool shareIsOpen = false;
|
|
|
|
///email输入文本
|
|
final TextEditingController feedbackTextController = TextEditingController();
|
|
|
|
/// 输入框焦点
|
|
FocusNode focusNode = FocusNode();
|
|
|
|
HomeController homeController = Get.find<HomeController>();
|
|
|
|
UserinfoModel userinfo = UserinfoModel();
|
|
|
|
Timer? _timer;
|
|
|
|
void onShare() {
|
|
shareIsOpen = true;
|
|
update();
|
|
}
|
|
|
|
void onShareClose() {
|
|
shareIsOpen = false;
|
|
update();
|
|
}
|
|
|
|
void onTapItem(int index) async {
|
|
if (index == 0) {
|
|
Get.toNamed(AppPages.aiSetting);
|
|
}
|
|
if (index == 1) {
|
|
Get.toNamed(AppPages.privacyPolicy, arguments: {
|
|
'title': options[index],
|
|
'url': Platform.isIOS ? privacyUrlIOS : privacyUrlAndroid,
|
|
});
|
|
}
|
|
if (index == 2) {
|
|
Get.toNamed(AppPages.termsOfService, arguments: {
|
|
'title': options[index],
|
|
'url': Platform.isIOS ? termsUrlIOS : termsUrlAndroid,
|
|
});
|
|
}
|
|
if (index == 3) {
|
|
Get.toNamed(AppPages.feedBack);
|
|
}
|
|
if (index == 4) {
|
|
Get.toNamed(AppPages.about);
|
|
}
|
|
if (index == 5) {
|
|
if (!shareIsOpen) {
|
|
shareIsOpen = !shareIsOpen;
|
|
Share.shareXFiles(
|
|
[await getImageFileFromAssets(Assets.iconIconApp)],
|
|
text: appName,
|
|
).then((value) {
|
|
shareIsOpen = !shareIsOpen;
|
|
});
|
|
}
|
|
}
|
|
var loginAccount = UPCache.getInstance().get("loginAccount");
|
|
if (index == 6) {
|
|
if (loginAccount != null) {
|
|
Get.dialog(
|
|
barrierDismissible: false,
|
|
RemindDialog(
|
|
content: 'Are you sure you want to logout?',
|
|
confirmOnTap: () {
|
|
loading(show: true);
|
|
_timer = Timer.periodic(const Duration(seconds: 1), (Timer t) {
|
|
UPCache.getInstance().remove("loginAccount");
|
|
homeController.userinfo = UserinfoModel();
|
|
update(["userinfo"]);
|
|
dismiss(dismiss: true);
|
|
_stopTimer();
|
|
});
|
|
},
|
|
),
|
|
);
|
|
} else {
|
|
toast("not login");
|
|
}
|
|
}
|
|
if (index == 7) {
|
|
if (loginAccount != null) {
|
|
Get.dialog(
|
|
barrierDismissible: false,
|
|
RemindDialog(
|
|
content: 'Are you sure you want to write off the account?',
|
|
confirmOnTap: () {
|
|
loading(show: true);
|
|
_timer = Timer.periodic(const Duration(seconds: 1), (Timer t) {
|
|
UPCache.getInstance().remove(loginAccount);
|
|
UPCache.getInstance().remove("loginAccount");
|
|
homeController.userinfo = UserinfoModel();
|
|
update(["userinfo"]);
|
|
dismiss(dismiss: true);
|
|
_stopTimer();
|
|
});
|
|
},
|
|
),
|
|
);
|
|
} else {
|
|
toast("not login");
|
|
}
|
|
}
|
|
}
|
|
|
|
void onTapAvatar() {
|
|
if (homeController.userinfo.username == null) {
|
|
Get.toNamed(AppPages.login);
|
|
} else {
|
|
Get.toNamed(AppPages.userEdit, arguments: {
|
|
'title': 'Edit',
|
|
});
|
|
}
|
|
}
|
|
|
|
void onTapToAISetting() {
|
|
Get.toNamed(AppPages.aiSetting);
|
|
}
|
|
|
|
/// 获取用户信息
|
|
void getUserInfo() {
|
|
var loginAccount = UPCache.getInstance().get("loginAccount");
|
|
var map = UPCache.getInstance().getJson(loginAccount ?? "");
|
|
if (map != null) {
|
|
userinfo = UserinfoModel.fromJson(map);
|
|
}
|
|
}
|
|
|
|
Future<XFile> getImageFileFromAssets(String path) async {
|
|
final byteData = await rootBundle.load(path);
|
|
|
|
final file = File('${(await LocalPathUtil.getTemporaryPath()).path}/$path');
|
|
await file.create(recursive: true);
|
|
await file.writeAsBytes(byteData.buffer
|
|
.asUint8List(byteData.offsetInBytes, byteData.lengthInBytes));
|
|
|
|
return XFile(file.path);
|
|
}
|
|
/// 停止定时器
|
|
void _stopTimer() {
|
|
_timer?.cancel();
|
|
_timer = null;
|
|
}
|
|
}
|