import 'package:dating_touchme_app/components/page_appbar.dart'; import 'package:dating_touchme_app/extension/ex_widget.dart'; import 'package:dating_touchme_app/generated/assets.dart'; import 'package:dating_touchme_app/pages/mine/blacklist_page.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:get/get_core/src/get_main.dart'; import 'package:tdesign_flutter/tdesign_flutter.dart'; class SettingPage extends StatefulWidget { const SettingPage({super.key}); @override State createState() => _SettingPageState(); } class _SettingPageState extends State { bool blockUser = false; @override Widget build(BuildContext context) { return Scaffold( backgroundColor: const Color.fromRGBO(250, 250, 250, 1), appBar: PageAppbar(title: "设置"), body: SingleChildScrollView( child: Container( padding: EdgeInsets.symmetric( vertical: 15.w, horizontal: 10.w ), child: Column( children: [ BlockItem( children: [ Item( label: "后台播放", child: TDSwitch( isOn: blockUser, trackOnColor: const Color.fromRGBO(117, 98, 249, 1), onChanged: (bool e){ print(e); blockUser = e; setState(() { }); return e; }, ), ), LineItem(), Item( label: "语音/视频通话提示音", child: TDSwitch( isOn: blockUser, trackOnColor: const Color.fromRGBO(117, 98, 249, 1), onChanged: (bool e){ print(e); blockUser = e; setState(() { }); return e; }, ), ), ], ), BlockItem( children: [ Item( label: "安全中心", child: Icon( Icons.keyboard_arrow_right, size: 10.w, color: const Color.fromRGBO(191, 191, 191, 1), ), ), LineItem(), Item( label: "黑名单", child: Icon( Icons.keyboard_arrow_right, size: 10.w, color: const Color.fromRGBO(191, 191, 191, 1), ), ).onTap((){ Get.to(() => BlacklistPage()); }), ], ), BlockItem( children: [ Item( label: "隐私设置", child: Icon( Icons.keyboard_arrow_right, size: 10.w, color: const Color.fromRGBO(191, 191, 191, 1), ), ), LineItem(), Item( label: "青少年模式", child: Icon( Icons.keyboard_arrow_right, size: 10.w, color: const Color.fromRGBO(191, 191, 191, 1), ), ), ], ), BlockItem( children: [ Item( label: "系统权限管理", child: Icon( Icons.keyboard_arrow_right, size: 10.w, color: const Color.fromRGBO(191, 191, 191, 1), ), ), LineItem(), Item( label: "消息通知", child: Icon( Icons.keyboard_arrow_right, size: 10.w, color: const Color.fromRGBO(191, 191, 191, 1), ), ), LineItem(), Item( label: "检查更新", child: Row( children: [ Text( "版本号 1.0.000", style: TextStyle( fontSize: 13.w, color: const Color.fromRGBO(117, 98, 249, 1) ), ), SizedBox(width: 10.w,), Icon( Icons.keyboard_arrow_right, size: 10.w, color: const Color.fromRGBO(191, 191, 191, 1), ) ], ), ).onTap((){ Navigator.of(context).push(TDSlidePopupRoute( modalBarrierColor: TDTheme.of(context).fontGyColor2, slideTransitionFrom: SlideTransitionFrom.center, builder: (context) { return Material( color: Colors.transparent, child: Container( color: Colors.transparent, width: 299.w, padding: EdgeInsets.only( top: 56.w ), child: Stack( clipBehavior: Clip.none, children: [ Container( width: 299.w, padding: EdgeInsets.only( top: 147.w, left: 30.w, right: 30.w, bottom: 25.w ), decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(18.w)), color: Colors.white ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ Text( "体验全新升级v1.2.0", style: TextStyle( fontSize: 16.w, fontWeight: FontWeight.w500 ), ), SizedBox(height: 14.w,), Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( width: 2.w, height: 5.w, margin: EdgeInsets.only( right: 10.w, top: 6.w ), decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(2.w)), color: const Color.fromRGBO(51, 51, 51, 1) ), ), SizedBox( width: 204.w, child: Text( "首页风格改版,更全面的内容,恍然一新的视觉用户体验。", style: TextStyle( fontSize: 12.w, ), ), ) ], ), SizedBox(height: 8.w,), Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( width: 2.w, height: 5.w, margin: EdgeInsets.only( right: 10.w, top: 6.w ), decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(2.w)), color: const Color.fromRGBO(51, 51, 51, 1) ), ), SizedBox( width: 204.w, child: Text( "优化了动画细节,让产品更流畅。", style: TextStyle( fontSize: 12.w, ), ), ) ], ), SizedBox(height: 32.w,), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( width: 113.w, height: 40.w, decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(9.w)), color: const Color.fromRGBO(245, 245, 245, 1) ), child: Center( child: Text( "暂不更新", style: TextStyle( fontSize: 15.w, color: const Color.fromRGBO(144, 144, 144, 1) ), ), ), ), Container( width: 113.w, height: 40.w, decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(9.w)), color: const Color.fromRGBO(245, 245, 245, 1), gradient: const LinearGradient( begin: Alignment.centerLeft, end: Alignment.centerRight, // 对应 CSS 90deg colors: [ Color.fromRGBO(131, 89, 255, 1), // rgba(131, 89, 255, 1) Color.fromRGBO(61, 138, 224, 1), // rgba(61, 138, 224, 1) ], ), ), child: Center( child: Text( "立即升级", style: TextStyle( fontSize: 15.w, fontWeight: FontWeight.w500, color: Colors.white ), ), ), ), ], ) ], ), ), Positioned( left: 0, top: -56.w, child: Image.asset( Assets.imagesUpdataBg, width: 299.w, ), ), Positioned( left: 11.w, top: -14.w, child: Image.asset( Assets.imagesUpdataIcon, width: 36.w, ), ), Positioned( left: 43.w, top: 29.w, child: Image.asset( Assets.imagesUpdataFont, width: 76.w, ), ) ], ), ), ); })); }), ], ), ], ), ), ), ); } } class BlockItem extends StatefulWidget { final List children; const BlockItem({super.key, required this.children}); @override State createState() => _BlockItemState(); } class _BlockItemState extends State { @override Widget build(BuildContext context) { return Container( padding: EdgeInsets.symmetric( horizontal: 14.w ), margin: EdgeInsets.only( bottom: 10.w ), decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(9.w)), color: Colors.white ), child: Column( children: widget.children, ), ); } } class Item extends StatefulWidget { final String label; final Widget child; const Item({super.key, required this.label, required this.child}); @override State createState() => _ItemState(); } class _ItemState extends State { @override Widget build(BuildContext context) { return SizedBox( height: 54.w, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( widget.label, style: TextStyle( fontSize: 13.w, fontWeight: FontWeight.w500 ), ), widget.child ], ), ); } } class LineItem extends StatelessWidget { const LineItem({super.key}); @override Widget build(BuildContext context) { return Container( width: 320.w, height: 2.w, color: const Color.fromRGBO(245, 245, 245, 1), ); } }