ar_tourism_flutter_unity/lib/components/WelcomeDialog.dart
2025-05-14 17:04:13 +08:00

201 lines
7.9 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import '../pages/mine/setting/privacy_policy.dart';
import '../pages/mine/setting/user_manual.dart';
import '../components/gradientButton.dart';
class WelcomeDialog extends StatelessWidget {
final VoidCallback onAgree;
final VoidCallback onBasicMode;
final VoidCallback onDisagree;
const WelcomeDialog({
super.key,
required this.onAgree,
required this.onBasicMode,
required this.onDisagree,
});
@override
Widget build(BuildContext context) {
// 获取屏幕宽度
final screenWidth = MediaQuery.of(context).size.width;
// 定义统一的按钮高度和圆角
const double buttonHeight = 36.0;
const double buttonRadius = 8.0;
// 使用Material替代Dialog以便可以完全控制宽度和边距
return Material(
type: MaterialType.transparency,
child: Center(
child: Container(
width: screenWidth * 0.80,
constraints: BoxConstraints(
minHeight: 320,
maxHeight: MediaQuery.of(context).size.height * 0.8,
),
decoration: BoxDecoration(
color: const Color(0xFF1F212E),
borderRadius: BorderRadius.circular(8),
),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
const SizedBox(height: 24),
const Text(
'欢迎使用看那',
style: TextStyle(
color: Colors.white,
fontSize: 16,
fontWeight: FontWeight.bold,
),
),
const SizedBox(height: 16),
Flexible(
child: Container(
margin: const EdgeInsets.symmetric(horizontal: 8),
padding: const EdgeInsets.all(12),
decoration: BoxDecoration(
color: const Color(0xFF292B37),
borderRadius: BorderRadius.circular(8),
),
child: const Text(
'根据政策要求,您需要在充分阅读并同意《用户协议》与《隐私政策》后,我们才能开始为您提供相应的功能或服务,同时我们会保护您的个人信息安全。\n\n如您同意以上内容,请点击"同意"开始使用我们的产品与服务。',
style: TextStyle(
color: Colors.white,
fontSize: 12,
height: 1.5,
),
textAlign: TextAlign.justify, // 两端对齐
),
),
),
const SizedBox(height: 16),
RichText(
textAlign: TextAlign.center,
text: TextSpan(
style: const TextStyle(
color: Color.fromRGBO(255, 255, 255, 0.6),
fontSize: 12,
),
children: [
const TextSpan(text: '点击阅读'),
TextSpan(
text: '《用户协议》',
style: TextStyle(
color: Color(0xFF96FBE9).withOpacity(0.8), // 修改为半透明白色
),
recognizer: TapGestureRecognizer()
..onTap = () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const UserManualPage()),
);
},
),
const TextSpan(text: ''),
TextSpan(
text: '《隐私政策》',
style: TextStyle(
color: Color(0xFF96FBE9).withOpacity(0.8) // 修改为半透明白色
),
recognizer: TapGestureRecognizer()
..onTap = () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const PrivacyPolicyPage()),
);
},
),
],
),
),
const SizedBox(height: 24),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: Row(
children: [
// 不同意按钮 - 背景色#292B37无边框白色文字
Expanded(
child: SizedBox(
height: buttonHeight,
child: ElevatedButton(
onPressed: onDisagree,
style: ElevatedButton.styleFrom(
backgroundColor: const Color(0xFF292B37), // 背景色
elevation: 0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(buttonRadius),
),
padding: EdgeInsets.zero,
),
child: const Text(
'不同意',
style: TextStyle(
color: Colors.white, // 白色文字
fontSize: 14,
),
),
),
),
),
const SizedBox(width: 8),
// 基本模式按钮 - 边框和文字Color.fromRGBO(255, 255, 255, 0.6)背景色Color.fromRGBO(255, 255, 255, 0.3)
Expanded(
child: Container(
height: buttonHeight,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(buttonRadius),
border: Border.all(
color: Color(0xFF96FBE9).withOpacity(0.8), // 半透明白色边框
width: 1,
),
color: Color(0xFF96FBE9).withOpacity(0.3), // 背景色
),
child: ElevatedButton(
onPressed: onBasicMode,
style: ElevatedButton.styleFrom(
backgroundColor: Colors.transparent,
elevation: 0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(buttonRadius),
),
padding: EdgeInsets.zero,
),
child: Text(
'基本模式',
style: TextStyle(
color: Color(0xFF96FBE9).withOpacity(0.8), // 半透明白色文字
fontSize: 14,
),
),
),
),
),
const SizedBox(width: 8),
// 同意按钮 - 使用GradientButton组件
Expanded(
child: SizedBox(
height: buttonHeight,
child: GradientButton(
width: double.infinity,
height: buttonHeight,
text: '同意',
onPressed: onAgree,
),
),
),
],
),
),
const SizedBox(height: 24),
],
),
),
),
);
}
}