Browse Source

Merge branch 'new_dev' of https://github.com/deepcloud2048/deep_voice into new_dev

newdev_shunjiawei
liwei1dao 1 year ago
parent
commit
54e1ba0e2c
  1. 575
      lib/modules/meeting/views/mine/meeting_member_view.dart

575
lib/modules/meeting/views/mine/meeting_member_view.dart

@ -17,6 +17,7 @@ class _MeetingMemberViewState extends State<MeetingMemberView> {
final _controller = Get.put(MeetingMineController());
int _tabsIndex = 0;
int _upgradeIndex = 0;
@override
Widget build(BuildContext context) {
@ -61,7 +62,9 @@ class _MeetingMemberViewState extends State<MeetingMemberView> {
_head(),
_member(),
_tabs(),
_comparison(),
_tabsIndex == 0 ? _comparison() : _detailed(),
_upgrade(),
_duration(),
],
),
);
@ -338,82 +341,125 @@ class _MeetingMemberViewState extends State<MeetingMemberView> {
],
),
),
_tables(
_tableItem(
'每月转写时长',
'300',
'1200',
'无限',
starter: '300',
pro: '1200',
unlimited: '无限',
isGradient: true,
),
_tables(
_tableItem(
'专业模版',
'有限',
'全量模版',
'全量模版',
starter: '有限',
pro: '全量模版',
unlimited: '全量模版',
),
_tables(
_tableItem(
'专业术语',
'—',
'',
'',
starter: '—',
),
_tables(
_tableItem(
'自定义模版',
'—',
'',
'',
starter: '—',
),
_tables(
_tableItem(
'Ask AI',
'—',
'',
'',
starter: '—',
),
_tables(
_tableItem(
'可视化思维导图',
'',
'',
'',
),
_tables(
_tableItem(
'区分说话人',
'',
'',
'',
),
_tables(
_tableItem(
'Private Cloud Sync',
'',
'',
'',
),
_tables(
_tableItem(
'AI 人声增强',
'',
'',
'',
),
_tables(
_tableItem(
'音频导入',
'',
'',
'',
),
_tables(
_tableItem(
'支持多种导出格式',
'',
'',
'',
),
],
);
}
Widget _tables(
String title,
String starter,
String pro,
String unlimited, {
Widget _detailed() {
return Column(
children: [
_detailedItem(
Icons.description,
Colors.purpleAccent,
'专业总结模版',
'专业模版设计,提高您的工作效率。根据行业需求量身定制。',
),
_detailedItem(
Icons.edit_note,
Colors.purpleAccent,
'自定义模版',
'您可以根据需求自定义总结 Prompts,并用它们生成所需的总结。',
),
_detailedItem(
Icons.psychology,
Colors.purpleAccent,
'Ask AI',
'从录音中智能挖掘更深入信息,一键生成数据表格、关键讨论结论、To Do、汇报邮件等格式内容。',
),
_detailedItem(
Icons.account_tree,
Colors.purpleAccent,
'可视化思维导图',
'超越总结-用思维导图整理和可视化要点,更有效地理解全文。',
),
_detailedItem(
Icons.groups,
Colors.purpleAccent,
'模版社区',
'发现、分享,并从用户创建的模版库中获得灵感。',
),
_detailedItem(
Icons.people,
Colors.red,
'区分说话人',
'音频转写将支持区分发言者,更直观的还原会议或电话通话内容。同时总结将更加准确。',
),
_detailedItem(
Icons.cloud_sync,
Colors.red,
'Private Cloud Sync',
'您的录音和转写等数据将安全存储在专属的云端服务器中,无论是上传还是下载,全程加密处理,确保隐私安全。',
),
_detailedItem(
Icons.graphic_eq,
Colors.red,
'AI人声增强',
'Al 人声增强支持多档降噪设置,智能消除背景噪音,增强语音清晰度,提升音频回放效果。',
),
_detailedItem(
Icons.file_upload,
Colors.red,
'音频导入',
'可以轻松从本地或第三方应用导入音频文件,如语音备忘录、Google云端硬盘等。',
),
_detailedItem(
Icons.file_download,
Colors.blue,
'多种导出格式',
'导出您的音频录音、转写文本和摘要为各种格式(TXT、PDF、JPEG),以满足您的需求。',
),
],
);
}
Widget _tableItem(
String title, {
String starter = '',
String pro = '',
String unlimited = '',
bool isGradient = false,
}) {
return Container(
@ -511,6 +557,61 @@ class _MeetingMemberViewState extends State<MeetingMemberView> {
);
}
Widget _detailedItem(
IconData icon,
Color color,
String title,
String description,
) {
return Container(
margin: EdgeInsets.symmetric(vertical: 10.w),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
width: 40.w,
height: 40.w,
margin: EdgeInsets.only(right: 10.w),
decoration: BoxDecoration(
color: color,
borderRadius: BorderRadius.circular(12.r),
),
child: Icon(
icon,
size: 24.w,
color: Colors.white,
),
),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
title,
style: TextStyle(
color: Colors.white,
fontSize: 14.sp,
fontWeight: FontWeight.bold,
),
),
Padding(
padding: EdgeInsets.only(top: 4.w),
child: Text(
description,
style: TextStyle(
color: Colors.grey[400],
fontSize: 12.sp,
),
),
),
],
),
),
],
),
);
}
Widget _check(bool isGradient) {
return Container(
width: 20.w,
@ -534,4 +635,378 @@ class _MeetingMemberViewState extends State<MeetingMemberView> {
),
);
}
Widget _upgrade() {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
margin: EdgeInsets.only(top: 30.w),
alignment: Alignment.center,
child: Text(
'升级您的会员',
style: TextStyle(
color: Colors.white,
fontSize: 24.sp,
fontWeight: FontWeight.bold,
),
),
),
Padding(
padding: EdgeInsets.symmetric(vertical: 15.w),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
GestureDetector(
onTap: () {
setState(() {
_upgradeIndex = 0;
});
},
behavior: HitTestBehavior.translucent,
child: Container(
height: 36.w,
padding: EdgeInsets.symmetric(horizontal: 15.w),
alignment: Alignment.center,
decoration: _upgradeIndex == 0
? BoxDecoration(
color: Colors.grey[700],
borderRadius: BorderRadius.circular(36.r),
)
: null,
child: Text(
'年订阅',
style: TextStyle(
color: Colors.white,
fontSize: 16.sp,
),
),
),
),
GestureDetector(
onTap: () {
setState(() {
_upgradeIndex = 1;
});
},
behavior: HitTestBehavior.translucent,
child: Container(
height: 36.w,
padding: EdgeInsets.symmetric(horizontal: 15.w),
alignment: Alignment.center,
decoration: _upgradeIndex == 1
? BoxDecoration(
color: Colors.grey[700],
borderRadius: BorderRadius.circular(36.r),
)
: null,
child: Text(
'月订阅',
style: TextStyle(
color: Colors.white,
fontSize: 16.sp,
),
),
),
),
],
),
),
if (_upgradeIndex == 0)
_upgradeItem(
'Pro ¥60/月',
'7天免费试用,之后按¥800/年。试用期结束前可随时取消。',
'7天免费试用',
onTap: () {},
),
if (_upgradeIndex == 0)
_upgradeItem(
'Unlimited ¥120/月',
'7天免费试用,之后按¥1600/年。试用期结束前可随时取消。',
'7天免费试用',
isGolden: true,
onTap: () {},
),
if (_upgradeIndex == 0)
Padding(
padding: EdgeInsets.only(left: 10.w, top: 2.w),
child: Text(
'*免费试用7天,然后按年收费,随时取消。',
style: TextStyle(
color: Colors.grey,
fontSize: 12.sp,
),
),
),
if (_upgradeIndex == 1)
_upgradeItem(
'Pro ¥120',
'¥120/月',
'订阅',
onTap: () {},
),
if (_upgradeIndex == 1)
_upgradeItem(
'Unlimited ¥198',
'¥198/月',
'订阅',
isGolden: true,
onTap: () {},
),
Padding(
padding: EdgeInsets.only(left: 10.w, top: 15.w),
child: Text(
'*升级订阅后,原订阅的剩余天数会自动折算差价并退还至您的支付账户',
style: TextStyle(
color: Colors.grey,
fontSize: 12.sp,
),
),
),
],
);
}
Widget _upgradeItem(
String title,
String description,
String btnText, {
Function()? onTap,
bool isGolden = false,
}) {
return Container(
padding: EdgeInsets.symmetric(horizontal: 15.w, vertical: 12.w),
margin: EdgeInsets.symmetric(vertical: 5.w),
decoration: BoxDecoration(
color: const Color(0xFF1A1A1A),
borderRadius: BorderRadius.circular(12.r),
border: Border.all(
color: Colors.grey[700]!,
),
),
child: Row(
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
title,
style: TextStyle(
color: Colors.white,
fontSize: 16.sp,
fontWeight: FontWeight.bold,
),
),
Padding(
padding: EdgeInsets.only(top: 5.w),
child: Text(
description,
style: TextStyle(
color: Colors.grey,
fontSize: 14.sp,
fontWeight: FontWeight.bold,
),
),
),
],
),
),
GestureDetector(
onTap: onTap,
child: Container(
width: 100.w,
padding: EdgeInsets.symmetric(vertical: 8.w),
margin: EdgeInsets.only(left: 10.w),
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(50.w),
gradient: LinearGradient(
colors: isGolden
? [Colors.amberAccent, Colors.white, Colors.amberAccent]
: [Colors.blue, Colors.pink],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
),
),
child: Text(
btnText,
style: TextStyle(
color: isGolden ? Colors.black : Colors.white,
fontSize: 14.sp,
fontWeight: FontWeight.bold,
),
),
),
),
],
),
);
}
Widget _duration() {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: EdgeInsets.only(top: 20.w, bottom: 10.w),
child: Text(
'购买更多转写时长',
style: TextStyle(
color: Colors.white,
fontSize: 16.sp,
fontWeight: FontWeight.bold,
),
),
),
Row(
children: [
_durationItem(
'6,000分钟',
'¥0.1/分钟',
'¥600.00',
'¥1200.00',
onTap: () {},
),
10.horizontalSpace,
_durationItem(
'3,000分钟',
'¥0.11/分钟',
'¥300.00',
'¥600.00',
onTap: () {},
),
],
),
Row(
children: [
_durationItem(
'600分钟',
'¥0.114/分钟',
'¥60.00',
'¥120.00',
onTap: () {},
),
10.horizontalSpace,
_durationItem(
'120分钟',
'¥0.184/分钟',
'¥12.00',
'¥24.00',
onTap: () {},
),
],
),
Padding(
padding: EdgeInsets.only(left: 10.w, top: 5.w, bottom: 20.w),
child: Text.rich(
TextSpan(
text: '*有效期:',
style: TextStyle(
color: Colors.grey,
fontSize: 12.sp,
fontWeight: FontWeight.bold,
),
children: const [
TextSpan(
text: '购买后立即激活,激活后2年内有效。',
style: TextStyle(
fontWeight: FontWeight.normal,
),
),
],
),
),
),
],
);
}
Widget _durationItem(
String title,
String description,
String price,
String originalPrice, {
Function()? onTap,
}) {
return Expanded(
child: Container(
padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 8.w),
margin: EdgeInsets.symmetric(vertical: 5.w),
decoration: BoxDecoration(
color: const Color(0xFF1A1A1A),
borderRadius: BorderRadius.circular(12.r),
border: Border.all(
color: Colors.grey[700]!,
),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
title,
style: TextStyle(
color: Colors.white,
fontSize: 14.sp,
),
),
Text(
description,
style: TextStyle(
color: Colors.grey,
fontSize: 12.sp,
),
),
Row(
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
price,
style: TextStyle(
color: Colors.amberAccent,
fontSize: 14.sp,
fontWeight: FontWeight.bold,
),
),
Text(
originalPrice,
style: TextStyle(
color: Colors.grey,
fontSize: 12.sp,
decoration: TextDecoration.lineThrough,
decorationColor: Colors.grey,
),
),
],
),
),
GestureDetector(
onTap: onTap,
child: Container(
padding:
EdgeInsets.symmetric(horizontal: 15.w, vertical: 5.w),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(24.r),
),
child: Text(
'购买',
style: TextStyle(
color: Colors.black,
fontSize: 12.sp,
fontWeight: FontWeight.bold,
),
),
),
),
],
),
],
),
),
);
}
}

Loading…
Cancel
Save