import 'package:bot_toast/bot_toast.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler_platform_interface/permission_handler_platform_interface.dart'; import 'package:project_telephony/base/base_style.dart'; import 'package:project_telephony/ui/login/login_page.dart'; import 'package:project_telephony/ui/tab_navigator.dart'; import 'package:project_telephony/ui/user/members_page.dart'; import 'package:project_telephony/ui/user/privacy_rights_page.dart'; import 'package:project_telephony/ui/widget/image_scaffold.dart'; import 'package:project_telephony/ui/widget/plone_bottom.dart'; import 'package:project_telephony/ui/widget/plone_image_picker.dart'; import 'package:project_telephony/utils/headers.dart'; import 'package:project_telephony/utils/permissionutils.dart'; import 'package:provider/provider.dart'; import 'package:telephony/telephony.dart'; import '../../constants/api.dart'; import '../../model/network/api_client.dart'; import '../../permission.dart'; import '../../providers/user_provider.dart'; import '../../utils/toast/cloud_toast.dart'; import '../../utils/user_tool.dart'; import '../home/home_page.dart'; class UserPage extends StatefulWidget { const UserPage({Key? key}) : super(key: key); @override _UserPageState createState() => _UserPageState(); } final Telephony telephony = Telephony.instance; class _UserPageState extends State { bool vle = false; final userProvider = Provider.of(Get.context!, listen: false); @override Widget build(BuildContext context) { return CloudScaffold( systemStyle: const SystemUiOverlayStyle( statusBarIconBrightness: Brightness.dark, // systemNavigationBarColor: Colors.white, ), path: Assets.images.bg.path, bodyColor: Colors.white, extendBody: true, body: Column(children: [ _getUser(), 72.hb, _getBanner(), 120.hb, _getSwitch(Assets.icons.switch1.path, "功能开关", true), _getSwitch(Assets.icons.privacy.path, "隐私政策", false), _getSwitch(Assets.icons.permissions.path, "权限说明", false), _getSwitch(Assets.icons.sms.path, "短信标签", false), // const Spacer(), 182.hb, userProvider.isLogin ? PloneBottom( border: false, onTap: () async{ var cancel = CloudToast.loading; var base = await apiClient.request(API.manager.logout, showMessage: true); if (base.code == 0) { UserTool.userProvider.logout(); Get.offAll(const HomePage()); } cancel(); }, textColor: const Color(0xFF1890FF), color1: const Color(0xFFEBF5FF), color2: const Color(0xFFEBF5FF), text: "退出登录", ) : const SizedBox() ]), ); } //头像 _getUser() { return Container( margin: EdgeInsets.only(left: 64.w, right: 64.w, top: 216.w), child: Row( children: [ GestureDetector( onTap: () { Get.to(() => const LoginPage()); }, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( userProvider.isLogin ? userProvider.userInfo.name : "登录/注册", style: TextStyle( fontSize: BaseStyle.fontSize48, color: BaseStyle.color333333, fontWeight: FontWeight.bold), ), 24.hb, Text( userProvider.isLogin ? "欢迎您登录短信帮手" : "登录获取更多信息", style: TextStyle( fontSize: BaseStyle.fontSize28, color: BaseStyle.color333333), ) ], ), ), const Spacer(), GestureDetector( onTap: () async { var value = await CloudImagePicker.pickSingleImage(title: '选择图片'); if (value != null) { BotToast.showText(text: '头像成功'); setState(() {}); } }, child: ClipOval( child: Image.asset( Assets.images.portrait.path, height: 128.w, width: 128.w, fit: BoxFit.cover, ), ), ) ], ), ); } //banner _getBanner() { return SizedBox( // margin: EdgeInsets.symmetric(horizontal: 32.w), height: 144.w, child: Stack(children: [ Align( child: SizedBox( width: 622.w, child: Image.asset( Assets.images.banner.path, fit: BoxFit.fill, ), )), Positioned( child: Container( padding: EdgeInsets.symmetric(horizontal: 112.w, vertical: 24.w), // margin: EdgeInsets.symmetric(horizontal: 64.w, vertical: 16.w), // padding: EdgeInsets.symmetric(), child: Row( children: [_getText(), const Spacer(), _getBotton()], ), )) ]), ); } //banner botton _getBotton() { return GestureDetector( onTap: () { Get.to(() => const MembersPage()); }, child: Container( padding: EdgeInsets.symmetric(horizontal: 32.w, vertical: 16.w), decoration: BoxDecoration( borderRadius: BorderRadius.circular(30.w), gradient: const LinearGradient( colors: [Color(0xFFFFF6D8), Color(0xFFFFEAB0)], begin: Alignment.centerLeft, end: Alignment.centerRight)), child: Text( "立即开通", style: TextStyle( color: const Color(0xFF001F3F), fontSize: BaseStyle.fontSize24), )), ); } //banner 文字 _getText() { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ _getVip(), 16.hb, Text( "解锁全部功能", style: TextStyle(color: Colors.white, fontSize: BaseStyle.fontSize24), ) ], ); } _getVip() { return Row( children: [ Text( "VIP", style: TextStyle( color: const Color(0xFFFFEAB0), fontFamily: "BlackItalic", fontSize: 32.sp), ), Container( width: 8.w, height: 8.w, alignment: Alignment.center, margin: EdgeInsets.symmetric(horizontal: 8.w), decoration: BoxDecoration( borderRadius: BorderRadius.circular(4), color: const Color(0xFFFFEAB0), ), ), const Text( "未开通会员", style: TextStyle( color: Color( 0xFFFFEAB0, ), fontWeight: FontWeight.w700), ) ], ); } //内容 _getSwitch(String url, String name, bool pd) { return GestureDetector( onTap: () async { pd ? "" : Get.to(() => PrivacyRightsPage( name: name, )); }, child: Container( padding: EdgeInsets.symmetric(horizontal: 32.w), child: ListTile( // onTap: (() {}), leading: Image.asset( url, height: 54.w, width: 56.w, fit: BoxFit.fill, ), title: Text( name, style: TextStyle( color: BaseStyle.color333333, fontSize: BaseStyle.fontSize34, fontWeight: FontWeight.bold), ), trailing: pd ? Switch( value: vle, onChanged: (value) { List permissions = [ Permission.sms, Permission.phone, ]; PermissionHelper.check(permissions, onSuccess: () { print('onSuccess'); }, onFailed: () { print('onFailed'); }, onOpenSetting: () { print('onOpenSetting'); openAppSettings(); }); setState(() { vle = value; }); }) : const Icon(Icons.keyboard_arrow_right)), ), ); } }