circle_app/circle_app/lib/app/userinfo/view.dart

1112 lines
38 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'package:cached_network_image/cached_network_image.dart';
import 'package:circle_app/app/userinfo/widgets/home_call_out.dart';
import 'package:circle_app/main.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:tencent_cloud_chat_uikit/tencent_cloud_chat_uikit.dart';
import '../../components/my_app_bar.dart';
import '../../router/app_routers.dart';
import '../../util/util.dart';
import '../select_circle/logic.dart';
import 'logic.dart';
class UserinfoPage extends StatefulWidget {
const UserinfoPage({super.key});
@override
MyTabbedScreenState createState() => MyTabbedScreenState();
}
class MyTabbedScreenState extends State<UserinfoPage>
with SingleTickerProviderStateMixin {
late TabController _tabController;
late PageController _pageController;
ScrollController scrollController = ScrollController();
bool isShowBlackTitle = false;
@override
void initState() {
super.initState();
_pageController = PageController();
_tabController = TabController(length: 2, vsync: this);
_tabController.animation!.addListener(_handleTabChange);
// _tabController.addListener(_handleTabChange);
// _tabController
}
void _handleTabChange() {
// 在这里可以执行滑动监听后的逻辑操作
// 比如根据当前选中的标签执行其他操作
// int currentIndex = .toString());
logic.isShowAlbum = _tabController.index == 0;
logic.update();
}
@override
void dispose() {
_tabController.dispose();
super.dispose();
}
final logic = Get.find<UserinfoLogic>();
final state = Get.find<UserinfoLogic>().state;
@override
Widget build(BuildContext context) {
return GetBuilder<UserinfoLogic>(
builder: (logic) {
return _buildPage(logic);
},
);
}
Widget _buildPage(UserinfoLogic logic) {
return Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage(getBaseImage("home_back")),
fit: BoxFit.cover,
),
),
child: Scaffold(
backgroundColor: Colors.transparent,
appBar: MyAppBar(
centerTitle: logic.userInfoBean != null
? "${logic.userInfoBean!.nickname}的主页"
: "个人主页",
),
body: Stack(
children: [
Container(
child: buildContent(logic),
),
Positioned(
bottom: 27.sp,
width: Get.width,
child: _meInfoButton(logic),
),
],
),
),
);
}
Widget _meInfoButton(UserinfoLogic controller) {
if (controller.isMe) {
return GestureDetector(
onTap: () async {
await Get.toNamed(
AppRoutes.Complete_materialPage,
arguments: "user",
);
logic.onInit();
},
child: Center(
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(17),
gradient: const LinearGradient(
colors: [
Color(0xFF06F9FA),
Color(0xFFDC5BFD),
],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
),
),
padding: EdgeInsets.symmetric(
vertical: 10.sp,
horizontal: 55.sp,
),
child: const Text(
"完善个人形象",
style: TextStyle(
color: Colors.white,
fontSize: 12,
),
),
),
));
} else {
final likeButton = GestureDetector(
onTap: () {
_showBottomSheet(context, controller);
},
child: Image(
image: AssetImage(getMineImage("icon_like")),
width: 40.sp,
height: 40.sp,
),
);
final likeText = Text(
controller.isLike ? "取消喜欢" : "喜欢",
style: TextStyle(
color: Colors.white,
fontSize: 12.sp,
),
);
final chatText = Text(
"私聊",
style: TextStyle(
color: Colors.white,
fontSize: 12.sp,
),
);
final gradientDecoration = BoxDecoration(
borderRadius: BorderRadius.circular(17.sp),
gradient: const LinearGradient(
colors: [
Color(0xFF06F9FA),
Color(0xFFDC5BFD),
],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
),
);
final chatButton = GestureDetector(
onTap: () {
if(logic.isBlack||logic.isDestroy||logic.isBlackBeen){
showOKToast("私聊失败,存在拉黑关系或者该账户已注销");
return;
}
if (logic.userInfoBean != null) {
String msg = Get.previousRoute;
if (msg == AppRoutes.Chat) {
Get.back();
} else {
pushChatPage(logic.userInfoBean!.id.toString(), logic.imId,
logic.userInfoBean!.nickname);
}
}
},
child: Container(
width: 130.sp,
height: 34.sp,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(17.sp),
gradient: const LinearGradient(
colors: [
Color(0x26FFFFFF),
Color(0x26FFFFFF),
],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
),
),
child: Center(child: chatText),
),
);
return Container(
margin: EdgeInsets.only(left: 18.sp, right: 18.sp),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
likeButton,
GestureDetector(
onTap: () {
logic.setLike();
},
child: Container(
width: 130.sp,
height: 34.sp,
decoration: gradientDecoration,
child: Center(child: likeText),
),
),
chatButton,
],
),
);
}
}
Widget buildContent(UserinfoLogic controller) {
final userInfoBean = controller.userInfoBean;
final interests = userInfoBean?.interests ?? [];
return Container(
padding: EdgeInsets.symmetric(vertical: 14.sp),
child: Column(
children: [
Container(
padding: EdgeInsets.symmetric(horizontal: 19.sp),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_imagelistView(controller),
Expanded(
child: buildUserContainer(controller),
),
],
),
),
Container(
padding: EdgeInsets.symmetric(
horizontal: 19.sp,
),
margin: EdgeInsets.only(top: 19.sp),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
Text(
userInfoBean?.nickname ?? "",
style: const TextStyle(
color: Color.fromRGBO(247, 250, 250, 1.0),
fontSize: 14,
),
),
SizedBox(width: 8.sp),
logic.isBlack||logic.isDestroy||logic.isBlackBeen?Container(): _buildInfoRow(controller),
],
),
Row(
children: [
Container(
margin: EdgeInsets.only(right: 5.sp),
width: 5.sp,
height: 5.sp,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: logic.isOnline
? const Color(0xFF00FFF4)
: const Color(0xFF787575),
),
),
logic.isBlack||logic.isDestroy||logic.isBlackBeen?Container(): Text(
controller.onLineCity,
style: TextStyle(
fontSize: 12.sp,
color: logic.isOnline
? const Color(0xFF00FFF4)
: const Color(0xFF787575),
),
),
],
),
],
),
),
SizedBox(
height: 59.sp,
child: logic.isBlack||logic.isDestroy||logic.isBlackBeen?Container(): _buildInterestsListView(interests),
),
titleTab(controller),
Expanded(
child: PageView(
controller: _pageController,
onPageChanged: (index) {
_tabController.animateTo(index);
},
children: [
logic.isBlack||logic.isDestroy||logic.isBlackBeen?Container():_imageAdapter(controller),
logic.isBlack||logic.isDestroy||logic.isBlackBeen?Container(): HomeCallOutView(controller.userId),
],
),
),
],
),
);
}
Widget _buildInterestsListView(List<Interest> interests) {
return ListView.builder(
itemCount: interests.length,
scrollDirection: Axis.horizontal,
padding: EdgeInsets.symmetric(vertical: 18.sp, horizontal: 19.sp),
itemBuilder: (context, index) {
final interest = interests[index];
return GestureDetector(
onTap: (){
Get.toNamed(AppRoutes.Signal_circle_list,
arguments: interests[index].id);
},
child: Container(
margin: EdgeInsets.only(right: 11.sp),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(17.0),
gradient: const LinearGradient(
colors: [
Color(0xFF06F9FA),
Color(0xFFDC5BFD),
],
),
color: const Color(0xFF392D53),
),
child: Container(
margin: EdgeInsets.all(0.2.sp),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(17.0),
color: const Color(0xFF392D53),
),
child: Padding(
padding: EdgeInsets.only(
top: 2.sp,
bottom: 2.sp,
left: 15.sp,
right: 15.sp,
),
child: Center(
child: Text(
interest.title,
style: const TextStyle(
fontSize: 11.0,
color: Colors.white,
),
),
),
),
),
),
);
},
);
}
Widget titleTab(UserinfoLogic controller) {
return Container(
alignment: Alignment.centerLeft,
padding: EdgeInsets.symmetric(horizontal: 10.sp),
height: 27.sp,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
TabBar(
isScrollable: true,
controller: _tabController,
indicator: UnderlineTabIndicator(
borderSide: BorderSide(
color: const Color(0xFF00FFF4),
width: 2.sp,
),
insets: EdgeInsets.symmetric(horizontal: 6.0.sp),
borderRadius: BorderRadius.circular(18.0),
),
indicatorColor: const Color(0xFF00FFF4),
indicatorWeight: 2.sp,
labelColor: const Color(0xFF00FFF4),
unselectedLabelColor: const Color(0xB3FFFFFF),
indicatorSize: TabBarIndicatorSize.label,
tabs: const [
Tab(
text: "形象照",
),
Tab(text: "喊话"),
],
onTap: (index) {
_pageController.animateToPage(
index, // 目标页面索引
duration: const Duration(milliseconds: 300), // 动画时长
curve: Curves.ease, // 动画曲线
);
},
),
logic.isBlack||logic.isDestroy||logic.isBlackBeen?Container(): GestureDetector(
onTap: () {
if(!logic.isShowAlbum){
List<MyConfigData> numbers = [];
var data = Get.toNamed(AppRoutes.Call_out, arguments: {'numbers': numbers});
return ;
}
if (controller.isMe) {
controller.isEdit = !controller.isEdit;
controller.update();
} else {
controller.urgeChange();
}
},
child: Visibility(
// visible: logic.isShowAlbum,
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(17),
gradient: const LinearGradient(
colors: [
Color(0xFF06F9FA),
Color(0xFFDC5BFD),
],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
),
),
padding: EdgeInsets.symmetric(
vertical: 2.sp,
horizontal: 12.sp,
),
child: Text(
logic.isShowAlbum?
controller.isMe
? controller.isEdit
? "完成"
: "管理"
: controller.isUrgeStatus
? "已催更"
: "催更":"发布喊话",
style: const TextStyle(
color: Colors.white,
fontSize: 12,
),
),
),
),
),
],
),
);
}
Widget _imageAdapter(UserinfoLogic controller) {
//print(controller.state.imaglist);
// :
return Container(
padding: EdgeInsets.symmetric(horizontal: 19.sp),
child: Stack(
children: [
Column(
children: [
if (controller.isMe)
Container(
margin: EdgeInsets.only(top: 18.sp, bottom: 14.sp),
child: Text(
controller.isLikeFoMsg,
style: const TextStyle(color: Colors.white30),
),
),
controller.state.imaglist.isEmpty && !controller.isMe
? Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
const SizedBox(
height: 100,
),
Image.asset(
getBaseImage('no_result'),
width: 200,
// height: 11,
),
const SizedBox(
height: 26,
),
Text(
controller.isMe
? "点击管理即可上传形象照哦~"
: "TA还没有发布过形象照快去催TA更新吧~",
style: const TextStyle(color: Colors.white30),
),
]),
)
: Expanded(
child: GridView.builder(
padding: const EdgeInsets.only(bottom: 58.0),
shrinkWrap: true,
gridDelegate:
const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3,
),
itemCount: controller.isMe
// ? controller.isEdit
// ? controller.state.imaglist.length < 15
// ? controller.state.imaglist.length
? controller.state.imaglist.length+1
: controller.state.imaglist.length ,
itemBuilder: (BuildContext context, int index) {
print("123123123123");
if (controller.isMe ) {
if (index == 0) {
return GestureDetector(
onTap: () {
if(controller.state.imaglist.length >= 15){
showOKToast("最大只可上传15张图片哦~");
return ;
}
controller.getImageFile();
},
child: Container(
margin: EdgeInsets.all(5.sp),
child: Image(
image: AssetImage(
getMineImage("icon_img_add")),
),
),
);
} else {
return Container(
margin: EdgeInsets.all(5.sp),
child: Center(
child: _buildImageItem(
controller.state.imaglist[index - 1].url,
controller,
index - 1,
),
),
);
}
} else {
return Container(
margin: EdgeInsets.all(5.sp),
child: Center(
child: _buildImageItem(
controller.state.imaglist[index].urlThumb,
controller,
index,
),
),
);
}
},
),
),
],
),
],
),
);
}
Widget _buildInfoRow(UserinfoLogic controller) {
return Row(
children: [
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(17),
gradient: const LinearGradient(
colors: [
Color.fromRGBO(141, 255, 248, 1.0),
Color.fromRGBO(181, 211, 255, 1.0),
],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
),
),
padding: EdgeInsets.only(
top: 2.sp,
bottom: 2.sp,
left: 10.sp,
right: 10.sp,
),
child: Text(
controller.ageMsg,
style: const TextStyle(
color: Colors.black,
fontSize: 10,
),
),
),
const SizedBox(width: 6),
if (controller.isVip > 0)
Image(
image: AssetImage(getBaseImage( controller.isVip == 1 ? "vip" : 'year_vip')),
width: 44.sp,
height: 18.sp,
),
],
);
}
Widget buildUserContainer(UserinfoLogic controller) {
return Container(
margin: EdgeInsets.only(left: 3.sp),
height: 58.sp,
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage(getMineImage("icon_user_content")),
fit: BoxFit.fill,
),
),
child: Container(
margin: EdgeInsets.only(left: 24.sp),
child: Center(
child: Text(
controller.userInfoBean != null
? controller.userInfoBean!.signature
: "",
maxLines: 2,
style: const TextStyle(color: Colors.white),
overflow: TextOverflow.ellipsis,
),
),
),
);
}
Widget _imagelistView(UserinfoLogic controller) {
return Stack(
alignment: Alignment.center,
children: [
Container(
width: 68.sp,
height: 68.sp,
decoration: const BoxDecoration(
shape: BoxShape.circle,
gradient: LinearGradient(
colors: [Color(0xFFDD3DF4), Color(0xFF30FFD9)],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
),
),
),
SizedBox(
width: 66.sp,
height: 66.sp,
child: _buildAvatar1(controller),
),
],
);
}
Widget _buildAvatar1(UserinfoLogic controller) {
if (controller.userInfoBean == null) {
return SizedBox(
width: 66.sp,
height: 66.sp,
);
} else {
return ClipOval(
child: GestureDetector(
onTap: () {
var imgList = <String>[];
imgList.add(controller.userInfoBean!.avatar);
Get.toNamed(AppRoutes.Swiper,
arguments: {'imaglist': imgList, 'index': 0});
},
child: CachedNetworkImage(
fit: BoxFit.cover,
placeholder: null,
imageUrl: controller.userInfoBean != null
? controller.userInfoBean!.avatar
: "",
width: 66.sp,
height: 66.sp,
),
),
);
}
}
Widget _buildImageItem(String url, UserinfoLogic controller, int index) {
return Stack(
children: [
SizedBox(
width: double.infinity,
height: double.infinity,
child: ClipRRect(
borderRadius: BorderRadius.circular(0.0),
child: GestureDetector(
onTap: () {
List<String> imaglist = [];
for (var element in controller.state.imaglist) {
imaglist.add(element.url);
}
Get.toNamed(AppRoutes.Swiper,
arguments: {'imaglist': imaglist, 'index': index});
},
child: Image.network(
fit: BoxFit.cover,
url,
),
),
),
),
if (controller.userId == "")
Positioned(
top: 0,
right: 0,
child: GestureDetector(
onTap: () {
_showDelImgDialog(context, controller, index);
},
child: Visibility(
visible: controller.isEdit,
child: Image(
image: AssetImage(getMineImage("icon_img_del")),
width: 20.sp,
height: 20.sp,
),
),
),
),
],
);
}
void _showBottomSheet(BuildContext context, UserinfoLogic controller) {
showModalBottomSheet(
context: context,
backgroundColor: Colors.transparent,
builder: (BuildContext context) {
return Container(
decoration: const BoxDecoration(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(16.0),
topRight: Radius.circular(16.0),
),
gradient: LinearGradient(
colors: [
Color(0xFF4A3E5D),
Color(0xFF344143),
],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
),
),
height: 118.0,
width: double.infinity,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
GestureDetector(
onTap: () {
Navigator.pop(context);
Get.toNamed(AppRoutes.ReportActivity,
arguments: {"userId": logic.userId});
},
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image(
image: AssetImage(getMineImage("icon_report")),
width: 40.sp,
height: 40.sp,
),
Container(
margin: EdgeInsets.only(top: 2.sp),
child: const Text(
"举报",
style: TextStyle(color: Colors.white),
),
),
],
),
),
GestureDetector(
onTap: () {
if (controller.isBlack) {
logic.setBlock("0");
Navigator.pop(context);
} else {
Navigator.pop(context);
_showReportDialog(context);
}
},
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image(
image: AssetImage(getMineImage("icon_block")),
width: 40.sp,
height: 40.sp,
),
Container(
margin: EdgeInsets.only(top: 2.sp),
child: Text(
controller.isBlack ? "取消拉黑" : "拉黑",
style: TextStyle(color: Colors.white),
),
),
],
),
),
],
),
);
},
);
}
void _showDelImgDialog(
BuildContext context, UserinfoLogic controller, int index) {
showDialog(
context: context,
builder: (BuildContext context) {
return Dialog(
backgroundColor: Colors.transparent,
child: Container(
height: 160.sp,
padding: const EdgeInsets.all(1.0),
child: Stack(
children: [
Container(
decoration: BoxDecoration(
shape: BoxShape.rectangle,
borderRadius: BorderRadius.circular(10.0),
gradient: const LinearGradient(
colors: [Color(0xFFDD3DF4), Color(0xFF30FFD9)],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
),
),
),
Container(
margin: EdgeInsets.all(1.sp),
decoration: BoxDecoration(
shape: BoxShape.rectangle,
borderRadius: BorderRadius.circular(10.0),
gradient: const LinearGradient(
colors: [Color(0xFF4C3E5F), Color(0xFF324140)],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
),
),
),
Container(
margin: EdgeInsets.only(top: 24.sp),
child: Column(
children: [
Center(
child: Text(
"提示",
style:
TextStyle(color: Colors.white, fontSize: 16.sp),
),
),
Container(
margin: EdgeInsets.only(
top: 12.sp, left: 14.sp, right: 14.sp),
alignment: Alignment.center,
child: Text(
"是否确认删除该形象照。",
textAlign: TextAlign.center,
style: TextStyle(
color: const Color(0xCCF7FAFA), fontSize: 16.sp),
),
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
GestureDetector(
onTap: () {
Navigator.pop(context);
},
child: Container(
margin: EdgeInsets.only(top: 30.sp),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(17),
gradient: const LinearGradient(
colors: [
Color(0x26FFFFFF),
Color(0x26FFFFFF),
],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
),
),
padding: EdgeInsets.only(
top: 10.sp,
bottom: 10.sp,
left: 52.sp,
right: 52.sp),
child: const Text(
"",
style: TextStyle(
color: Colors.white,
fontSize: 12,
),
),
),
),
SizedBox(width: 24.sp),
GestureDetector(
onTap: () {
Navigator.pop(context);
controller.delAlbumImage(index);
},
child: Container(
margin: EdgeInsets.only(top: 24.sp),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(17),
gradient: const LinearGradient(
colors: [
Color(0xFF06F9FA),
Color(0xFFDC5BFD),
],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
),
),
padding: EdgeInsets.only(
top: 10.sp,
bottom: 10.sp,
left: 52.sp,
right: 52.sp),
child: const Text(
"",
style: TextStyle(
color: Colors.white,
fontSize: 12,
),
),
),
)
],
)
],
),
)
],
),
),
);
},
);
}
void _showReportDialog(BuildContext context) {
showDialog(
context: context,
builder: (BuildContext context) {
return Dialog(
backgroundColor: Colors.transparent,
child: Container(
height: 277.sp,
padding: const EdgeInsets.all(1.0),
child: Stack(
children: [
Container(
decoration: BoxDecoration(
shape: BoxShape.rectangle,
borderRadius: BorderRadius.circular(10.0),
gradient: const LinearGradient(
colors: [Color(0xFFDD3DF4), Color(0xFF30FFD9)],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
),
),
),
Container(
margin: EdgeInsets.all(1.sp),
decoration: BoxDecoration(
shape: BoxShape.rectangle,
borderRadius: BorderRadius.circular(10.0),
gradient: const LinearGradient(
colors: [Color(0xFF4C3E5F), Color(0xFF324140)],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
),
),
),
Container(
margin: EdgeInsets.only(top: 24.sp),
child: Column(
children: [
Center(
child: Text(
"是否拉黑",
style:
TextStyle(color: Colors.white, fontSize: 16.sp),
),
),
Container(
margin: EdgeInsets.only(top: 14.sp),
alignment: Alignment.center,
child: Image(
image: AssetImage(getMineImage("icon_dialog_black")),
width: 70.sp,
height: 70.sp,
),
),
Container(
margin: EdgeInsets.only(
top: 12.sp, left: 14.sp, right: 14.sp),
alignment: Alignment.center,
child: Text(
"拉黑后,你将屏蔽对方的任何信息若您关注了对方,将自动取消关注。",
textAlign: TextAlign.center,
style: TextStyle(
color: const Color(0xCCF7FAFA), fontSize: 16.sp),
),
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
GestureDetector(
onTap: () {
Navigator.pop(context);
},
child: Container(
margin: EdgeInsets.only(top: 24.sp),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(17),
gradient: const LinearGradient(
colors: [
Color(0x26FFFFFF),
Color(0x26FFFFFF),
],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
),
),
padding: EdgeInsets.only(
top: 10.sp,
bottom: 10.sp,
left: 52.sp,
right: 52.sp),
child: const Text(
"",
style: TextStyle(
color: Colors.white,
fontSize: 12,
),
),
),
),
SizedBox(width: 24.sp),
GestureDetector(
onTap: () {
logic.setBlock("1");
},
child: Container(
margin: EdgeInsets.only(top: 24.sp),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(17),
gradient: const LinearGradient(
colors: [
Color(0xFF06F9FA),
Color(0xFFDC5BFD),
],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
),
),
padding: EdgeInsets.only(
top: 10.sp,
bottom: 10.sp,
left: 52.sp,
right: 52.sp),
child: const Text(
"",
style: TextStyle(
color: Colors.white,
fontSize: 12,
),
),
),
)
],
)
],
),
)
],
),
),
);
},
);
}
}