会员刷新

master
戴余标 2 years ago
parent ee4f61aa4a
commit da09a3eb68

@ -3,6 +3,7 @@ import 'dart:ffi';
import 'package:bot_toast/bot_toast.dart'; import 'package:bot_toast/bot_toast.dart';
import 'package:flustars/flustars.dart'; import 'package:flustars/flustars.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_easyrefresh/easy_refresh.dart';
import 'package:project_telephony/base/base_style.dart'; import 'package:project_telephony/base/base_style.dart';
import 'package:project_telephony/ui/tab_navigator.dart'; import 'package:project_telephony/ui/tab_navigator.dart';
import 'package:project_telephony/ui/user/user_page.dart'; import 'package:project_telephony/ui/user/user_page.dart';
@ -22,7 +23,6 @@ import '../../model/pay/wx_pay_model.dart';
import '../../utils/pay_util.dart'; import '../../utils/pay_util.dart';
import '../../utils/toast/cloud_toast.dart'; import '../../utils/toast/cloud_toast.dart';
class MembersPage extends StatefulWidget { class MembersPage extends StatefulWidget {
const MembersPage({Key? key}) : super(key: key); const MembersPage({Key? key}) : super(key: key);
@ -30,7 +30,6 @@ class MembersPage extends StatefulWidget {
_MembersPageState createState() => _MembersPageState(); _MembersPageState createState() => _MembersPageState();
} }
List<dynamic>? data; List<dynamic>? data;
final List<ChooseItems> _piceList = [ final List<ChooseItems> _piceList = [
ChooseItems( ChooseItems(
@ -42,7 +41,7 @@ final List<ChooseItems> _piceList = [
pice: 1, pice: 1,
), ),
]; ];
ChooseItems? _chooseItem= _piceList[0]; ChooseItems? _chooseItem = _piceList[0];
int _selectIndex = 0; int _selectIndex = 0;
List payWay = [ List payWay = [
{ {
@ -52,84 +51,105 @@ List payWay = [
{'payName': '支付宝支付', 'payUrl': Assets.icons.zhifubao.path} {'payName': '支付宝支付', 'payUrl': Assets.icons.zhifubao.path}
]; ];
class _MembersPageState extends State<MembersPage> { class _MembersPageState extends State<MembersPage> {
int nowPrice=1; int nowPrice = 1;
final EasyRefreshController _easyRefreshController = EasyRefreshController();
@override
void dispose() {
_easyRefreshController.dispose();
super.dispose();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
body: Stack( body: EasyRefresh(
children: [ firstRefresh: true,
Align( header: MaterialHeader(),
child: SizedBox( footer: MaterialFooter(),
width: 750.w, controller: _easyRefreshController,
height: 1624.w, onRefresh: () async {
), await UserTool.userProvider.updateUserInfo();
),
Positioned( setState(() {});
child: Image.asset( },
Assets.images.vipbg.path, child: Stack(
)), children: [
Positioned(top: 256.w, left: 32.w, child: _getBanner()), Align(
Positioned( child: SizedBox(
top: 480.w,
child: Container(
height: 1208.w,
width: 750.w, width: 750.w,
decoration: const BoxDecoration( height: 1624.w,
color: Colors.white, ),
borderRadius: BorderRadius.only( ),
topLeft: Radius.circular(20), Positioned(
topRight: Radius.circular(20))), child: Image.asset(
child: Column(children: [ Assets.images.vipbg.path,
_getRecharge(), )),
_getSpay(payWay), Positioned(top: 256.w, left: 32.w, child: _getBanner()),
PloneBottom( Positioned(
border: true, top: 480.w,
onTap: () async { child: Container(
if(_chooseItem == null){ height: 1208.w,
Get.snackbar('提示', "请先选择充值月份"); width: 750.w,
}else{ decoration: const BoxDecoration(
if (_selectIndex == 0) { color: Colors.white,
_wxPayFunc(); borderRadius: BorderRadius.only(
}else{ topLeft: Radius.circular(20),
var result = await isAliPayInstalled(); // topRight: Radius.circular(20))),
if(!result){ child: Column(children: [
Get.snackbar('提示', "请先安装支付宝"); _getRecharge(),
}else{ _getSpay(payWay),
_aliPay(); PloneBottom(
// aliPay("paySign").then((payResult) { border: true,
// // map["paySign"] onTap: () async {
// print("支付宝:$payResult"); if (_chooseItem == null) {
// if (payResult['resultStatus'] == '9000') { Get.snackbar('提示', "请先选择充值月份");
// Get.snackbar('提示', "充值成功"); } else {
// } else { if (_selectIndex == 0) {
// Get.snackbar('提示', payResult['memo']); _wxPayFunc();
// } } else {
// }); var result =
await isAliPayInstalled(); //
if (!result) {
Get.snackbar('提示', "请先安装支付宝");
} else {
_aliPay();
// aliPay("paySign").then((payResult) {
// // map["paySign"]
// print("支付宝:$payResult");
// if (payResult['resultStatus'] == '9000') {
// Get.snackbar('提示', "充值成功");
// } else {
// Get.snackbar('提示', payResult['memo']);
// }
// });
}
} }
} }
} },
}, textColor: const Color(0xFF333333),
textColor: const Color(0xFF333333), text: UserTool.userProvider.userInfo.isVip != 1
text: UserTool.userProvider.userInfo.isVip!=1?"立即开通":"立即续费", ? "立即开通"
: "立即续费",
color1: const Color(0xFFFFF6D8), color1: const Color(0xFFFFF6D8),
color2: const Color(0xFFFFEAB0), color2: const Color(0xFFFFEAB0),
) )
]), ]),
)), )),
Positioned( Positioned(
top: 68.w, top: 68.w,
child: Row( child: Row(
children: [ children: [
const CloudBackButton( const CloudBackButton(
isSpecial: true, isSpecial: true,
), ),
154.wb, 154.wb,
Text('会员中心', style: Theme.of(context).textTheme.headline6), Text('会员中心', style: Theme.of(context).textTheme.headline6),
], ],
)), )),
], ],
),
), ),
); );
} }
@ -173,7 +193,9 @@ class _MembersPageState extends State<MembersPage> {
), ),
16.hb, 16.hb,
Text( Text(
UserTool.userProvider.userInfo.isVip!=1?"暂未开通会员":"${DateUtil.formatDateMs(UserTool.userProvider.userInfo.end * 1000, format: DateFormats.y_mo_d)}到期", UserTool.userProvider.userInfo.isVip != 1
? "暂未开通会员"
: "${DateUtil.formatDateMs(UserTool.userProvider.userInfo.end * 1000, format: DateFormats.y_mo_d)}到期",
style: TextStyle(color: Colors.white, fontSize: BaseStyle.fontSize24), style: TextStyle(color: Colors.white, fontSize: BaseStyle.fontSize24),
), ),
], ],
@ -200,8 +222,8 @@ class _MembersPageState extends State<MembersPage> {
color: const Color(0xFFFFEAB0), color: const Color(0xFFFFEAB0),
), ),
), ),
Text( Text(
UserTool.userProvider.userInfo.isVip!=1?"未开通会员":"已成为会员", UserTool.userProvider.userInfo.isVip != 1 ? "未开通会员" : "已成为会员",
style: const TextStyle( style: const TextStyle(
color: Color( color: Color(
0xFFFFEAB0, 0xFFFFEAB0,
@ -212,12 +234,11 @@ class _MembersPageState extends State<MembersPage> {
); );
} }
Future _wxPayFunc() async {
Future _wxPayFunc() async{ bool isInstalled = await fluwx.isWeChatInstalled;
bool isInstalled=await fluwx.isWeChatInstalled; if (!isInstalled) {
if(!isInstalled){
BotToast.showText(text: "请先安装微信"); BotToast.showText(text: "请先安装微信");
return ; return;
} }
// //
_wxPay(); _wxPay();
@ -233,6 +254,7 @@ class _MembersPageState extends State<MembersPage> {
// payModel: wxPayModel, // payModel: wxPayModel,
// ); // );
} }
// base ={ // base ={
// "content": { // "content": {
// "prepayId": "wx121434071826969924754d7d3309520000", // "prepayId": "wx121434071826969924754d7d3309520000",
@ -243,10 +265,10 @@ class _MembersPageState extends State<MembersPage> {
// "sign": "i4LDk+FlAfXukLPet6oFdtVkAXHv8aKkajO4i2tiXETBqudWJPzYAaziPH3eBo1yCvkMOyoVddWDKqHXhwrN2uvubz8YpSICt9yZBcndVaXOK+X9hY765sYoFV6sGHz5iuPljTRUWWrmc8GYMEs8TlLDB5Q50NenzJSChdfDtZRV4kXtVK6xY9b0y++eUo/snzpmq/X6GwS9n0auKkT0TKW1C30/Hzpw3SMziXPP02TvBvbqj57f6rHuGJS/LUX2ZwCR8iFZsfuiXo+7lyHHsimr4jVczdS6VtobeekrPq4vTe72d/HU/ECEZRSYxsL5DbyS2TvSNzFA6Z7wGDzkpQ==" // "sign": "i4LDk+FlAfXukLPet6oFdtVkAXHv8aKkajO4i2tiXETBqudWJPzYAaziPH3eBo1yCvkMOyoVddWDKqHXhwrN2uvubz8YpSICt9yZBcndVaXOK+X9hY765sYoFV6sGHz5iuPljTRUWWrmc8GYMEs8TlLDB5Q50NenzJSChdfDtZRV4kXtVK6xY9b0y++eUo/snzpmq/X6GwS9n0auKkT0TKW1C30/Hzpw3SMziXPP02TvBvbqj57f6rHuGJS/LUX2ZwCR8iFZsfuiXo+7lyHHsimr4jVczdS6VtobeekrPq4vTe72d/HU/ECEZRSYxsL5DbyS2TvSNzFA6Z7wGDzkpQ=="
// } // }
// }; // };
// await apiClient.request(API.user.wallet.assessRecharge, data: { // await apiClient.request(API.user.wallet.assessRecharge, data: {
// 'count': widget.count, // 'count': widget.count,
// 'payType': 2, // 'payType': 2,
// }); // });
// if (base.code ==null) { // if (base.code ==null) {
// //
// } else { // } else {
@ -261,11 +283,12 @@ class _MembersPageState extends State<MembersPage> {
}); });
if (base.code == 0) { if (base.code == 0) {
await PayUtil().callAliPay(base.data); await PayUtil().callAliPay(base.data);
Get.offAll(const TabNavigator(index: 1,)); _easyRefreshController.callRefresh();
} else { } else {
CloudToast.show(base.msg); CloudToast.show(base.msg);
} }
} }
Future _wxPay() async { Future _wxPay() async {
var base = await apiClient.request(API.pay.wxpay, data: { var base = await apiClient.request(API.pay.wxpay, data: {
// 'amount': nowPrice,// // 'amount': nowPrice,//
@ -276,7 +299,7 @@ class _MembersPageState extends State<MembersPage> {
await PayUtil().callWxPay( await PayUtil().callWxPay(
payModel: wxPayModel, payModel: wxPayModel,
); );
Get.offAll(const TabNavigator(index: 1,)); _easyRefreshController.callRefresh();
} else { } else {
CloudToast.show(base.msg); CloudToast.show(base.msg);
} }
@ -301,7 +324,7 @@ class _MembersPageState extends State<MembersPage> {
mainAxisSpacing: 20.w, mainAxisSpacing: 20.w,
callback: (item, index) { callback: (item, index) {
_chooseItem = item; _chooseItem = item;
nowPrice=_piceList[index].pice; nowPrice = _piceList[index].pice;
setState(() {}); setState(() {});
}, },
pickItem: _chooseItem, pickItem: _chooseItem,

@ -3,6 +3,7 @@ import 'package:flustars/flustars.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_background_service/flutter_background_service.dart'; import 'package:flutter_background_service/flutter_background_service.dart';
import 'package:flutter_easyrefresh/easy_refresh.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
import 'package:project_telephony/base/base_style.dart'; import 'package:project_telephony/base/base_style.dart';
import 'package:project_telephony/ui/login/login_page.dart'; import 'package:project_telephony/ui/login/login_page.dart';
@ -46,36 +47,46 @@ class _UserPageState extends State<UserPage> {
String? endDate; String? endDate;
final service = FlutterBackgroundService(); final service = FlutterBackgroundService();
late bool vle=false; late bool vle = false;
// bool vle=service.isRunning() as bool;
_load() async{ _load() async {
vle=await service.isRunning(); vle = await service.isRunning();
} }
final EasyRefreshController _easyRefreshController = EasyRefreshController();
@override
void dispose() {
_easyRefreshController.dispose();
super.dispose();
}
@override @override
void initState() { void initState() {
super.initState(); super.initState();
UserTool.userProvider.updateUserInfo(); UserTool.userProvider.updateUserInfo();
Future.delayed(const Duration(milliseconds: 0), ()=>setState(() { Future.delayed(
if ( UserTool.userProvider.isLogin) { const Duration(milliseconds: 0),
print(UserTool.userProvider.userInfo.end*1000); () => setState(() {
print(DateTime.now().millisecondsSinceEpoch); if (UserTool.userProvider.isLogin) {
if (UserTool.userProvider.userInfo.end*1000>DateTime.now().microsecondsSinceEpoch) { print(UserTool.userProvider.userInfo.end * 1000);
isVip = false; print(DateTime.now().millisecondsSinceEpoch);
vle=false; if (UserTool.userProvider.userInfo.end * 1000 >
} else { DateTime.now().microsecondsSinceEpoch) {
isVip = true; isVip = false;
_load(); vle = false;
} } else {
//service.isRunning() as bool; isVip = true;
endDate=DateUtil.formatDateMs(UserTool.userProvider.userInfo.end * 1000, format: DateFormats.y_mo_d); _load();
}else{ }
vle = false; //service.isRunning() as bool;
} endDate = DateUtil.formatDateMs(
})); UserTool.userProvider.userInfo.end * 1000,
// Future.delayed(const Duration(milliseconds: 0), () async { format: DateFormats.y_mo_d);
// } else {
// }); vle = false;
}
}));
} }
@override @override
@ -88,39 +99,39 @@ class _UserPageState extends State<UserPage> {
path: Assets.images.bg.path, path: Assets.images.bg.path,
bodyColor: Colors.white, bodyColor: Colors.white,
extendBody: true, extendBody: true,
body: Column(
body: Column(children: [ children: [
_getUser(), _getUser(),
72.hb, 72.hb,
_getBanner(), _getBanner(),
120.hb, 120.hb,
_getSwitch2(), _getSwitch2(),
_getSwitch(Assets.icons.privacy.path, "隐私政策", false), _getSwitch(Assets.icons.privacy.path, "隐私政策", false),
_getSwitch(Assets.icons.permissions.path, "权限说明", false), _getSwitch(Assets.icons.permissions.path, "权限说明", false),
_getSwitch(Assets.icons.sms.path, "短信标签", false), _getSwitch(Assets.icons.sms.path, "短信标签", false),
// const Spacer(), // const Spacer(),
182.hb, 182.hb,
UserTool. userProvider.isLogin UserTool.userProvider.isLogin
? PloneBottom( ? PloneBottom(
border: false, border: false,
onTap: () async { onTap: () async {
var cancel = CloudToast.loading;
var cancel = CloudToast.loading; var base = await apiClient.request(API.app.logout,
var base = await apiClient.request(API.app.logout, showMessage: true);
showMessage: true); if (base.code == 0) {
if (base.code == 0) { UserTool.userProvider.logout();
UserTool.userProvider.logout(); Get.offAll(const TabNavigator());
Get.offAll(const TabNavigator()); }
} cancel();
cancel(); },
}, textColor: const Color(0xFF1890FF),
textColor: const Color(0xFF1890FF), color1: const Color(0xFFEBF5FF),
color1: const Color(0xFFEBF5FF), color2: const Color(0xFFEBF5FF),
color2: const Color(0xFFEBF5FF), text: "退出登录",
text: "退出登录", )
) : const SizedBox()
: const SizedBox() ],
]), ),
); );
} }
@ -132,7 +143,7 @@ class _UserPageState extends State<UserPage> {
children: [ children: [
GestureDetector( GestureDetector(
onTap: () { onTap: () {
if(!userProvider.isLogin){ if (!userProvider.isLogin) {
Get.to(() => const LoginPage()); Get.to(() => const LoginPage());
} }
}, },
@ -140,8 +151,10 @@ class _UserPageState extends State<UserPage> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
UserTool.userProvider.isLogin ?UserTool.userProvider.userInfo.name : "登录/注册", UserTool.userProvider.isLogin
// UserTool.userProvider.userInfo.name , ? UserTool.userProvider.userInfo.name
: "登录/注册",
// UserTool.userProvider.userInfo.name ,
style: TextStyle( style: TextStyle(
fontSize: BaseStyle.fontSize48, fontSize: BaseStyle.fontSize48,
color: BaseStyle.color333333, color: BaseStyle.color333333,
@ -168,7 +181,9 @@ class _UserPageState extends State<UserPage> {
}, },
child: ClipOval( child: ClipOval(
child: Image.asset( child: Image.asset(
UserTool.userProvider.isLogin?Assets.images.portraitDeep.path:Assets.images.portrait.path, UserTool.userProvider.isLogin
? Assets.images.portraitDeep.path
: Assets.images.portrait.path,
height: 128.w, height: 128.w,
width: 128.w, width: 128.w,
fit: BoxFit.cover, fit: BoxFit.cover,
@ -185,35 +200,49 @@ class _UserPageState extends State<UserPage> {
return SizedBox( return SizedBox(
// margin: EdgeInsets.symmetric(horizontal: 32.w), // margin: EdgeInsets.symmetric(horizontal: 32.w),
height: 144.w, height: 144.w,
child: Stack(children: [ child: Stack(
Align( children: [
child: SizedBox( Align(
width: 622.w, child: SizedBox(
child: Image.asset( width: 622.w,
Assets.images.banner.path, child: Image.asset(
fit: BoxFit.fill, Assets.images.banner.path,
), fit: BoxFit.fill,
)), ),
Positioned( )),
Positioned(
child: Container( child: Container(
padding: EdgeInsets.symmetric(horizontal: 112.w, vertical: 24.w), padding: EdgeInsets.symmetric(horizontal: 112.w, vertical: 24.w),
// margin: EdgeInsets.symmetric(horizontal: 64.w, vertical: 16.w), // margin: EdgeInsets.symmetric(horizontal: 64.w, vertical: 16.w),
// padding: EdgeInsets.symmetric(), // padding: EdgeInsets.symmetric(),
child: Row( child: Row(
children: [_getText(), const Spacer(), _getBotton()], children: [_getText(), const Spacer(), _getBotton()],
),
),
), ),
)) ],
]), ),
); );
} }
_getRequests() async {
endDate = DateUtil.formatDateMs(
UserTool.userProvider.userInfo.end * 1000,
format: DateFormats.y_mo_d);
setState(() {});
}
//banner botton //banner botton
_getBotton() { _getBotton() {
return GestureDetector( return GestureDetector(
onTap: () { onTap: () {
if(userProvider.isLogin){ if (userProvider.isLogin) {
Get.to(() => const MembersPage()); Navigator.of(context)
}else{ .push(
MaterialPageRoute(builder: (_) => const MembersPage()),
)
.then((val) => _getRequests());
} else {
BotToast.showText(text: '您还未登录,请先登录!'); BotToast.showText(text: '您还未登录,请先登录!');
} }
}, },
@ -281,72 +310,73 @@ class _UserPageState extends State<UserPage> {
} }
// //
_getSwitch2(){ _getSwitch2() {
return Container( return Container(
padding: EdgeInsets.symmetric(horizontal: 32.w), padding: EdgeInsets.symmetric(horizontal: 32.w),
child: ListTile( child: ListTile(
// onTap: (() {}), // onTap: (() {}),
leading: Image.asset( leading: Image.asset(
Assets.icons.switch1.path, Assets.icons.switch1.path,
height: 54.w, height: 54.w,
width: 56.w, width: 56.w,
fit: BoxFit.fill, fit: BoxFit.fill,
), ),
title: Text( title: Text(
"功能开关", "功能开关",
style: TextStyle( style: TextStyle(
color: BaseStyle.color333333, color: BaseStyle.color333333,
fontSize: BaseStyle.fontSize34, fontSize: BaseStyle.fontSize34,
fontWeight: FontWeight.bold), fontWeight: FontWeight.bold),
), ),
trailing: Switch( trailing: Switch(
value: vle, value: vle,
onChanged: (value) async { onChanged: (value) async {
final SharedPreferences prefs = await _prefs;
// if(!value){
//
// }
// await prefs.setBool("kg", value);
// print("这是数据${prefs.getBool("kg")}");
setState(() {
if (isVip) {
vle = value;
// prefs.setBool("kg", vle);
// initializeService();
if (vle) {
print("true");
prefs.remove("kg");
prefs.setBool("kg", vle);
service.startService();
// WidgetsFlutterBinding.ensureInitialized();
// initializeService();
// UserTool.userProvider.setKg(vle)
// initializeService();
initializeService();
BotToast.showText(text: " 你开启了该功能");
// initializeService();
// print("这是数据${prefs.getBool("kg")}");
} else {
prefs.remove("kg");
prefs.setBool("kg", vle);
service.invoke("stopService");
final SharedPreferences prefs = await _prefs; ///
// if(!value){ // exit(0);
//
// }
// await prefs.setBool("kg", value);
// print("这是数据${prefs.getBool("kg")}");
setState(() {
if(isVip){
vle=value;
// prefs.setBool("kg", vle);
// initializeService();
if(vle){
print("true");
prefs.remove("kg");
prefs.setBool("kg", vle);
service.startService();
// WidgetsFlutterBinding.ensureInitialized();
// initializeService();
// UserTool.userProvider.setKg(vle)
// initializeService();
initializeService();
BotToast.showText(text: " 你开启了该功能");
// initializeService();
// print("这是数据${prefs.getBool("kg")}");
}else{
prefs.remove("kg");
prefs.setBool("kg", vle);
service.invoke("stopService");///
// exit(0);
// UserTool.userProvider.setKg(vle); // UserTool.userProvider.setKg(vle);
// prefs.setBool("kg", false); // prefs.setBool("kg", false);
// initializeService(); // initializeService();
BotToast.showText(text: "你已经关闭该功能"); BotToast.showText(text: "你已经关闭该功能");
// print("这是数据${prefs.getBool("kg")}"); // print("这是数据${prefs.getBool("kg")}");
}
}else{
BotToast.showText(text: "还没有开通会员,不可使用改功能");
} }
} else {
}); BotToast.showText(text: "还没有开通会员,不可使用改功能");
}), }
)); });
}),
));
} }
_getSwitch(String url, String name, bool pd) { _getSwitch(String url, String name, bool pd) {
return GestureDetector( return GestureDetector(
onTap: () async { onTap: () async {
@ -354,8 +384,9 @@ class _UserPageState extends State<UserPage> {
switch (name) { switch (name) {
case "短信标签": case "短信标签":
Get.to(() => ContentDetailsPage( Get.to(() => ContentDetailsPage(
content: content: UserTool.userProvider.isLogin
UserTool.userProvider.isLogin ? UserTool.userProvider.userInfo.tag : "", ? UserTool.userProvider.userInfo.tag
: "",
ploneBack: (String textContent) { ploneBack: (String textContent) {
// print("这是数据" + textContent); // print("这是数据" + textContent);
// textList.setAll(index, {textContent}); // textList.setAll(index, {textContent});
@ -392,7 +423,7 @@ class _UserPageState extends State<UserPage> {
fontSize: BaseStyle.fontSize34, fontSize: BaseStyle.fontSize34,
fontWeight: FontWeight.bold), fontWeight: FontWeight.bold),
), ),
trailing:const Icon(Icons.keyboard_arrow_right)), trailing: const Icon(Icons.keyboard_arrow_right)),
), ),
); );
} }

@ -18,7 +18,7 @@ class CloudBackButton extends StatelessWidget {
? Padding( ? Padding(
padding: isSpecial ? EdgeInsets.only(left: 8.w) : EdgeInsets.zero, padding: isSpecial ? EdgeInsets.only(left: 8.w) : EdgeInsets.zero,
child: IconButton( child: IconButton(
onPressed: () => Get.back(), onPressed: () => Navigator.pop(context,true),
icon: Icon( icon: Icon(
CupertinoIcons.chevron_back, CupertinoIcons.chevron_back,
color: color, color: color,

Loading…
Cancel
Save