diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index ca4a8bf61..aff31ef06 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -35,7 +35,7 @@ Editor CFBundleURLSchemes - wx5bbb7be9324f3e2d + wx4b5ec8957ad5e425 diff --git a/lib/modules/meeting/views/mine/meeting_member_view.dart b/lib/modules/meeting/views/mine/meeting_member_view.dart index b5caf7563..89bfdd27d 100644 --- a/lib/modules/meeting/views/mine/meeting_member_view.dart +++ b/lib/modules/meeting/views/mine/meeting_member_view.dart @@ -17,6 +17,7 @@ class _MeetingMemberViewState extends State { final _controller = Get.put(MeetingMineController()); int _tabsIndex = 0; + int _upgradeIndex = 0; @override Widget build(BuildContext context) { @@ -61,7 +62,9 @@ class _MeetingMemberViewState extends State { _head(), _member(), _tabs(), - _comparison(), + _tabsIndex == 0 ? _comparison() : _detailed(), + _upgrade(), + _duration(), ], ), ); @@ -338,82 +341,125 @@ class _MeetingMemberViewState extends State { ], ), ), - _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 { ); } + 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 { ), ); } + + 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, + ), + ), + ), + ), + ], + ), + ], + ), + ), + ); + } }