Browse Source

添加隐私政策同意复选框

weicu
lxm 2 years ago
parent
commit
6fda7002d1
  1. 2
      lib/core/translations/language/de_de.dart
  2. 2
      lib/core/translations/language/en_us.dart
  3. 2
      lib/core/translations/language/es_es.dart
  4. 2
      lib/core/translations/language/fr_fr.dart
  5. 2
      lib/core/translations/language/it_it.dart
  6. 1
      lib/core/translations/language/ja_jp.dart
  7. 1
      lib/core/translations/language/ko_kr.dart
  8. 2
      lib/core/translations/language/pt_pt.dart
  9. 2
      lib/core/translations/language/ru_ru.dart
  10. 2
      lib/core/translations/language/vi_vn.dart
  11. 1
      lib/core/translations/language/zh_cn.dart
  12. 1
      lib/core/translations/language/zh_hk.dart
  13. 2
      lib/data/services/deapsound_ai_service.dart
  14. 2
      lib/data/services/network/nw_api.dart
  15. 17
      lib/modules/login/controllers/login_controller.dart
  16. 42
      lib/modules/login/views/login_view.dart

2
lib/core/translations/language/de_de.dart

@ -64,6 +64,8 @@ const Map<String, String> deDE = {
"pleaseEnterCompleteCode":
"Bitte geben Sie den vollständigen Verifizierungscode ein",
"loginFailed": "Anmeldung fehlgeschlagen, bitte versuchen Sie es erneut",
'pleaseAcceptPrivacyPolicy':
'Bitte lesen und akzeptieren Sie die Datenschutzerklärung und die Nutzungsbedingungen',
// 首页
"deviceStatus": "Gerätestatus",

2
lib/core/translations/language/en_us.dart

@ -64,6 +64,8 @@ const Map<String, String> enUS = {
"pleaseEnterCompleteCode": "Please enter the complete verification code",
// 登录错误提示
"loginFailed": "Login failed, please try again",
'pleaseAcceptPrivacyPolicy':
'Please read and accept the Privacy Policy and User Agreement first',
// 首页
"deviceStatus": "Device Status",

2
lib/core/translations/language/es_es.dart

@ -66,6 +66,8 @@ const Map<String, String> esES = {
"pleaseEnterCompleteCode":
"Por favor, introduce el código de verificación completo",
"loginFailed": "Error al iniciar sesión, por favor intente de nuevo",
'pleaseAcceptPrivacyPolicy':
'Por favor, lea y acepte la Política de Privacidad y el Acuerdo de Usuario primero',
// 首页
"deviceStatus": "Estado del Dispositivo",

2
lib/core/translations/language/fr_fr.dart

@ -65,6 +65,8 @@ const Map<String, String> frFR = {
"tip": "Avis",
"pleaseEnterCompleteCode": "Veuillez saisir le code de vérification complet",
"loginFailed": "Échec de la connexion, veuillez réessayer",
'pleaseAcceptPrivacyPolicy':
'Veuillez lire et accepter la Politique de Confidentialité et les Conditions d\'Utilisation',
// 首页
"deviceStatus": "État de l'appareil",

2
lib/core/translations/language/it_it.dart

@ -63,6 +63,8 @@ const Map<String, String> itIT = {
"tip": "Avviso",
"pleaseEnterCompleteCode": "Inserisci il codice di verifica completo",
"loginFailed": "Accesso fallito, per favore riprova",
'pleaseAcceptPrivacyPolicy':
'Si prega di leggere e accettare l\'Informativa sulla Privacy e le Condizioni d\'Uso',
// 首页
"deviceStatus": "Stato del dispositivo",

1
lib/core/translations/language/ja_jp.dart

@ -63,6 +63,7 @@ const Map<String, String> jaJP = {
"tip": "お知らせ",
"pleaseEnterCompleteCode": "認証コードを完全に入力してください",
"loginFailed": "ログインに失敗しました。もう一度お試しください",
'pleaseAcceptPrivacyPolicy': 'プライバシーポリシーとユーザー契約を読んで同意してください',
// 首页
"deviceStatus": "デバイスステータス",

1
lib/core/translations/language/ko_kr.dart

@ -63,6 +63,7 @@ const Map<String, String> koKR = {
"tip": "알림",
"pleaseEnterCompleteCode": "인증번호를 완전히 입력해주세요",
"loginFailed": "로그인 실패, 다시 시도해주세요",
'pleaseAcceptPrivacyPolicy': '개인정보 보호정책 및 사용자 계약을 읽고 동의해주세요',
// 首页
"deviceStatus": "기기 상태",

2
lib/core/translations/language/pt_pt.dart

@ -67,6 +67,8 @@ const Map<String, String> ptPT = {
"pleaseEnterCompleteCode":
"Por favor, insira o código de verificação completo",
"loginFailed": "Falha no login, tente novamente",
'pleaseAcceptPrivacyPolicy':
'Por favor, leia e aceite a Política de Privacidade e o Acordo do Usuário primeiro',
// 首页
"deviceStatus": "Status do Dispositivo",

2
lib/core/translations/language/ru_ru.dart

@ -64,6 +64,8 @@ const Map<String, String> ruRU = {
"tip": "Уведомление",
"pleaseEnterCompleteCode": "Пожалуйста, введите полный код подтверждения",
"loginFailed": "Ошибка входа, пожалуйста, попробуйте снова",
'pleaseAcceptPrivacyPolicy':
'Пожалуйста, прочтите и примите Политику конфиденциальности и Пользовательское соглашение',
// 首页
"deviceStatus": "Статус устройства",

2
lib/core/translations/language/vi_vn.dart

@ -63,6 +63,8 @@ const Map<String, String> viVN = {
"tip": "Thông báo",
"pleaseEnterCompleteCode": "Vui lòng nhập đầy đủ mã xác thực",
"loginFailed": "Đăng nhập thất bại, vui lòng thử lại",
'pleaseAcceptPrivacyPolicy':
'Vui lòng đọc và chấp nhận Chính sách Bảo mật và Thỏa thuận Người dùng',
// 首页
"deviceStatus": "Trạng thái thiết bị",

1
lib/core/translations/language/zh_cn.dart

@ -62,6 +62,7 @@ const Map<String, String> zhCN = {
"tip": "提示",
"pleaseEnterCompleteCode": "请输入完整的验证码",
"loginFailed": "登录失败,请重试",
'pleaseAcceptPrivacyPolicy': '请先阅读并同意隐私政策和用户协议',
// 首页
"deviceStatus": "设备状态",

1
lib/core/translations/language/zh_hk.dart

@ -62,6 +62,7 @@ const Map<String, String> zhHK = {
"tip": "提示",
"pleaseEnterCompleteCode": "請輸入完整的驗證碼",
"loginFailed": "登錄失敗,請重試",
'pleaseAcceptPrivacyPolicy': '請先閱讀並同意私隱政策和用戶協議',
// 首页
"deviceStatus": "設備狀態",

2
lib/data/services/deapsound_ai_service.dart

@ -28,7 +28,7 @@ class DeapsoundAIService implements AiService {
required String systemPrompt,
}) async* {
final client = http.Client();
final url = Uri.parse('https://www.deapsound.com/ai/funcchat');
final url = Uri.parse('https://api.deapsound.com/ai/funcchat');
List contextsList = [];
String msg = '';

2
lib/data/services/network/nw_api.dart

@ -1,4 +1,4 @@
class NWApi {
// static const baseApi = "https://www.deapsound.com";
static const baseApi = "https://www.deapsound.com";
static const baseApi = "https://api.deapsound.com";
}

17
lib/modules/login/controllers/login_controller.dart

@ -24,6 +24,10 @@ class LoginController extends GetxController {
String _deviceId = '';
final _hasAcceptedPrivacy = false.obs;
bool get hasAcceptedPrivacy => _hasAcceptedPrivacy.value;
set hasAcceptedPrivacy(bool value) => _hasAcceptedPrivacy.value = value;
// 添加国家编码相关状态
final _selectedCountryCode = ''.obs;
final _selectedCountryFlag = '✉️'.obs;
@ -416,7 +420,6 @@ class LoginController extends GetxController {
// 登录
Future<void> login() async {
print("数据获取Facebook${loginType}");
// 添加基础验证
if (loginType == 0 || loginType == 1) {
// 邮箱或手机号登录
@ -455,6 +458,18 @@ class LoginController extends GetxController {
return;
}
}
//验证隐私协议勾选状态
if (!_hasAcceptedPrivacy.value) {
Get.snackbar(
'tip'.tr,
'pleaseAcceptPrivacyPolicy'.tr,
snackPosition: SnackPosition.TOP,
backgroundColor: Colors.red.withOpacity(0.1),
colorText: Colors.red,
);
return;
}
_isLoading.value = true;
try {

42
lib/modules/login/views/login_view.dart

@ -51,7 +51,7 @@ class LoginView extends GetView<LoginController> {
_buildSocialLoginSection(isDarkMode),
// 用户协议
SizedBox(height: 40.h),
SizedBox(height: 24.h),
_buildTermsAndPrivacy(isDarkMode),
SizedBox(height: 24.h),
],
@ -524,14 +524,40 @@ class LoginView extends GetView<LoginController> {
Widget _buildTermsAndPrivacy(bool isDarkMode) {
return Column(
children: [
Text(
'expressConsent'.tr, // 登录/注册即表示你同意
style: TextStyle(
fontSize: 12.sp,
color: isDarkMode ? Colors.grey[500] : Colors.grey[600],
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center, // 添加这行
children: [
SizedBox(
width: 12.w,
height: 16.w,
child: Transform.scale(
scale: 0.7,
child: Obx(() => Checkbox(
value: controller.hasAcceptedPrivacy,
onChanged: (value) =>
controller.hasAcceptedPrivacy = value ?? false,
activeColor: const Color(0xFF3B82F6),
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
visualDensity: VisualDensity.compact,
side: BorderSide(
width: 1.6,
color: Colors.grey[600]!,
),
)),
),
),
SizedBox(width: 4.w),
Text(
'expressConsent'.tr,
style: TextStyle(
fontSize: 13.sp,
color: isDarkMode ? Colors.grey[400] : Colors.grey[700],
),
),
],
),
SizedBox(height: 4.h),
//SizedBox(height: 4.h),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [

Loading…
Cancel
Save