新增首次进入应用弹出隐私协议框
This commit is contained in:
parent
4245996742
commit
83195c8ac2
@ -1,8 +1,11 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/flavors.dart';
|
||||
import 'package:star_lock/tools/appFirstEnterHandle.dart';
|
||||
import 'package:star_lock/tools/storage.dart';
|
||||
|
||||
import '../../appRouters.dart';
|
||||
import '../../app_settings/app_colors.dart';
|
||||
|
||||
@ -1,9 +1,10 @@
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:star_lock/login/login/starLock_login_page.dart';
|
||||
import 'package:star_lock/tools/appFirstEnterHandle.dart';
|
||||
import 'package:star_lock/tools/storage.dart';
|
||||
|
||||
import '../main/lockMian/lockMain/lockMain_page.dart';
|
||||
|
||||
|
||||
class StarLockApplication extends StatefulWidget {
|
||||
const StarLockApplication({Key? key}) : super(key: key);
|
||||
|
||||
@ -12,11 +13,37 @@ class StarLockApplication extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _StarLockApplicationState extends State<StarLockApplication> {
|
||||
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
// return NavPages();
|
||||
return const StarLockMainPage();
|
||||
AppFirstEnterHandle().getAppFirstEnter(context);
|
||||
|
||||
return FutureBuilder<bool>(
|
||||
future: getLoginStatus(),
|
||||
builder: (context, snapshot) {
|
||||
if (snapshot.connectionState == ConnectionState.waiting) {
|
||||
// 如果异步操作尚未完成,返回一个加载指示器或其他等待状态的小部件
|
||||
return const CircularProgressIndicator();
|
||||
} else if (snapshot.hasData) {
|
||||
if (snapshot.data!) {
|
||||
// 如果用户已登录,返回主页面
|
||||
return const StarLockMainPage();
|
||||
} else {
|
||||
// 如果用户未登录,返回登录页面
|
||||
return const StarLockLoginPage();
|
||||
}
|
||||
} else {
|
||||
// 如果没有数据,返回一个空白的小部件
|
||||
return const StarLockLoginPage();
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Future<bool> getLoginStatus() async {
|
||||
final data = await Storage.getString(saveUserLoginData);
|
||||
if (data != null && data.isNotEmpty) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
94
star_lock/lib/tools/appFirstEnterHandle.dart
Normal file
94
star_lock/lib/tools/appFirstEnterHandle.dart
Normal file
@ -0,0 +1,94 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/gestures.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
|
||||
import 'package:star_lock/tools/storage.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
|
||||
class AppFirstEnterHandle {
|
||||
Future getAppFirstEnter(BuildContext widgetContext) async {
|
||||
var isFirstTime = await Storage.getString(isFirstEnter);
|
||||
if (isFirstTime != isFirstEnter) {
|
||||
showPrivacyAgreementAlert(widgetContext);
|
||||
}
|
||||
}
|
||||
|
||||
//隐私协议弹窗
|
||||
void showPrivacyAgreementAlert(BuildContext widgetContext) {
|
||||
showCupertinoDialog(
|
||||
context: widgetContext,
|
||||
builder: (context) {
|
||||
return CupertinoAlertDialog(
|
||||
title: const Text('用户协议和隐私政策概要\n'),
|
||||
content: Text.rich(
|
||||
TextSpan(
|
||||
text: '感谢您使用本应用。我们非常重视您的个人信息和隐私保护,在使用本产品之前,请认真阅读',
|
||||
style: const TextStyle(fontSize: 16.0),
|
||||
children: [
|
||||
TextSpan(
|
||||
text: '《用户协议》',
|
||||
style: const TextStyle(
|
||||
color: Colors.blue, decoration: TextDecoration.underline),
|
||||
recognizer: TapGestureRecognizer()
|
||||
..onTap = () {
|
||||
// 处理用户协议点击事件
|
||||
_launchURL(XSConstantMacro.userAgreementURL);
|
||||
},
|
||||
),
|
||||
const TextSpan(text: '和'),
|
||||
TextSpan(
|
||||
text: '《隐私政策》',
|
||||
style: const TextStyle(
|
||||
color: Colors.blue, decoration: TextDecoration.underline),
|
||||
recognizer: TapGestureRecognizer()
|
||||
..onTap = () {
|
||||
// 处理隐私政策点击事件
|
||||
_launchURL(XSConstantMacro.privacyPolicyURL);
|
||||
},
|
||||
),
|
||||
const TextSpan(
|
||||
text:
|
||||
'的全部内容。点击“同意”即表示您同意并接受全部条款。若选择不同意,将无法使用我们的产品和服务,并会退出应用。'),
|
||||
],
|
||||
),
|
||||
),
|
||||
actions: [
|
||||
CupertinoDialogAction(
|
||||
child: const Text(
|
||||
'不同意',
|
||||
style: TextStyle(color: Colors.black),
|
||||
),
|
||||
onPressed: () {
|
||||
_exitApp();
|
||||
},
|
||||
),
|
||||
CupertinoDialogAction(
|
||||
child: const Text(
|
||||
'同意',
|
||||
style: TextStyle(color: Colors.blue),
|
||||
),
|
||||
onPressed: () {
|
||||
Storage.setString(isFirstEnter, isFirstEnter);
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
_launchURL(String url) async {
|
||||
if (await canLaunchUrl(Uri.parse(url))) {
|
||||
await launchUrl(Uri.parse(url));
|
||||
} else {
|
||||
throw '无法打开链接 $url';
|
||||
}
|
||||
}
|
||||
|
||||
void _exitApp() {
|
||||
exit(0); // 退出应用程序
|
||||
}
|
||||
}
|
||||
@ -15,6 +15,7 @@ const saveBlueToken = "BlueGetToken";
|
||||
const currentConnectionLockId = "CurrentConnectionLockId";
|
||||
const currentConnectionMacAddress = "CurrentConnectionMacAddress";
|
||||
const ifIsDemoModeOrNot = "IfIsDemoModeOrNot";
|
||||
const isFirstEnter = "isFirstEnter"; //是否首次进入应用
|
||||
|
||||
const saveUserLoginData = "userLoginData";
|
||||
|
||||
@ -182,5 +183,4 @@ class Storage {
|
||||
static Future<void> saveLoginData(LoginData? data) async {
|
||||
await Storage.setString(saveUserLoginData, jsonEncode(data));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user