1775 lines
65 KiB
Dart
1775 lines
65 KiB
Dart
import 'dart:async';
|
||
import 'dart:ui';
|
||
|
||
import 'package:cached_network_image/cached_network_image.dart';
|
||
import 'package:circle_app/circle_app/userinfo/widgets/home_call_out.dart';
|
||
import 'package:circle_app/commons/Widgets/base_tip_widget.dart';
|
||
import 'package:circle_app/commons/Widgets/user_share.dart';
|
||
import 'package:circle_app/commons/colors/app_color.dart';
|
||
import 'package:circle_app/commons/const.dart';
|
||
import 'package:circle_app/main.dart';
|
||
import 'package:circle_app/net/api.dart';
|
||
import 'package:flutter/cupertino.dart';
|
||
import 'package:flutter/material.dart';
|
||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||
import 'package:get/get.dart';
|
||
|
||
import '../../commons/Widgets/tag_widget.dart';
|
||
import '../../commons/Widgets/my_app_bar.dart';
|
||
import '../../router/routers.dart';
|
||
import '../../utils/cache_img.dart';
|
||
import '../../utils/eventBus.dart';
|
||
import '../../utils/util.dart';
|
||
import '../../view/notice.dart';
|
||
import '../circle_list/widgets/right_circle_iten.dart';
|
||
import '../home/logic.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, RouteAware {
|
||
late TabController _tabController;
|
||
|
||
ScrollController scrollController = ScrollController();
|
||
bool isShowBlackTitle = false;
|
||
|
||
bool isSetState = false;
|
||
|
||
int countdown = 5;
|
||
Timer? timer = null;
|
||
|
||
var sub;
|
||
@override
|
||
void initState() {
|
||
super.initState();
|
||
sub = EventBusManager.on<ScrollViewScrollTop>().listen((event) {
|
||
if (isSetState) {
|
||
isSetState = false;
|
||
scrollController.animateTo(0,
|
||
duration: Duration(milliseconds: 250), curve: Curves.easeIn);
|
||
}
|
||
});
|
||
scrollController.addListener(() {
|
||
if (scrollController.position.pixels ==
|
||
scrollController.position.maxScrollExtent) {
|
||
print('2222');
|
||
isSetState = true;
|
||
EventBusManager.fire(ScrollViewIsEnd(true));
|
||
// setState(() {});
|
||
} else {
|
||
EventBusManager.fire(ScrollViewIsEnd(false));
|
||
if (isSetState) {
|
||
isSetState = false;
|
||
// setState(() {});
|
||
}
|
||
}
|
||
});
|
||
_tabController = TabController(length: 2, vsync: this);
|
||
_tabController.animation!.addListener(_handleTabChange);
|
||
starTimer();
|
||
}
|
||
|
||
|
||
|
||
@override
|
||
void didChangeDependencies() {
|
||
// TODO: implement didChangeDependencies
|
||
super.didChangeDependencies();
|
||
|
||
/// 路由订阅
|
||
routeObserver.subscribe(this, ModalRoute.of(context) as PageRoute);
|
||
}
|
||
|
||
void didPopNext() {
|
||
print('didPopNext');
|
||
if (logic.userId.isEmpty) {
|
||
logic.fetchUserInfo(Api.getUserInfo);
|
||
}
|
||
}
|
||
|
||
///当前页面进入时触发
|
||
void didPush() {
|
||
print('didPopNext');
|
||
}
|
||
|
||
void didPop() {
|
||
print('didPop');
|
||
}
|
||
|
||
void _handleTabChange() {
|
||
// 在这里可以执行滑动监听后的逻辑操作
|
||
// 比如根据当前选中的标签执行其他操作
|
||
// int currentIndex = .toString());
|
||
logic.isShowAlbum = _tabController.index == 0;
|
||
logic.update();
|
||
}
|
||
|
||
@override
|
||
void dispose() {
|
||
_tabController.dispose();
|
||
timer?.cancel();
|
||
sub.cancel();
|
||
routeObserver.unsubscribe(this);
|
||
super.dispose();
|
||
}
|
||
|
||
final logic = Get.find<UserinfoLogic>();
|
||
final state = Get.find<UserinfoLogic>().state;
|
||
|
||
HomeLogic homeLogic = Get.find<HomeLogic>();
|
||
|
||
@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: homeLogic.isProd
|
||
? MyAppBar(
|
||
centerTitle: logic.userInfoBean != null
|
||
? "${logic.userInfoBean!.nickname}"
|
||
: "个人主页",
|
||
actionWdiget: logic.isMe
|
||
? GestureDetector(
|
||
onTap: () async {
|
||
if (logic.userInfoBean!.contact.isNotEmpty) {
|
||
showUpdateWxPicker();
|
||
} else {
|
||
await showAddWxPicker(
|
||
logic.userInfoBean!.contact!.isNotEmpty ?? false,
|
||
isHidden:
|
||
logic.userInfoBean!.contact!.isNotEmpty ??
|
||
false,
|
||
isWxHidden:
|
||
logic.userInfoBean!.contact.contains('*'),
|
||
);
|
||
logic.fetchUserInfo(Api.getUserInfo);
|
||
}
|
||
},
|
||
child: Stack(
|
||
alignment: Alignment.center,
|
||
children: [
|
||
Container(
|
||
width: 111.sp,
|
||
height: 26.sp,
|
||
decoration: BoxDecoration(
|
||
borderRadius: BorderRadius.circular(12.sp),
|
||
gradient: LinearGradient(
|
||
colors: [
|
||
Color(0xFF30FFD9),
|
||
Color(0xFFDD3DF4)
|
||
],
|
||
begin: Alignment.centerLeft,
|
||
end: Alignment.centerRight,
|
||
),
|
||
),
|
||
),
|
||
Container(
|
||
width: 110.sp,
|
||
decoration: BoxDecoration(
|
||
borderRadius: BorderRadius.circular(11.sp),
|
||
color: Color(0xFF240F3B)),
|
||
alignment: Alignment.center,
|
||
height: 24.sp,
|
||
child: Text(
|
||
logic.userInfoBean != null
|
||
? logic.userInfoBean!.contact.isNotEmpty
|
||
? '联系方式设置'
|
||
: '填联系方式赚钱'
|
||
: '填联系方式赚钱',
|
||
style: TextStyle(
|
||
color: Colors.white, fontSize: 14.sp),
|
||
),
|
||
)
|
||
],
|
||
),
|
||
)
|
||
: logic.userInfoBean != null
|
||
? logic.userInfoBean!.contact.isEmpty
|
||
? GestureDetector(
|
||
onTap: () {
|
||
logic.sendWhatToWx();
|
||
},
|
||
child: Stack(
|
||
alignment: Alignment.center,
|
||
children: [
|
||
Container(
|
||
width: 111.sp,
|
||
height: 26.sp,
|
||
decoration: BoxDecoration(
|
||
borderRadius:
|
||
BorderRadius.circular(12.sp),
|
||
gradient: LinearGradient(
|
||
colors: [
|
||
Color(0xFF30FFD9),
|
||
Color(0xFFDD3DF4)
|
||
],
|
||
begin: Alignment.centerLeft,
|
||
end: Alignment.centerRight,
|
||
),
|
||
),
|
||
),
|
||
Container(
|
||
width: 110.sp,
|
||
decoration: BoxDecoration(
|
||
borderRadius:
|
||
BorderRadius.circular(11.sp),
|
||
color: Color(0xFF240F3B)),
|
||
alignment: Alignment.center,
|
||
height: 24.sp,
|
||
child: Row(
|
||
mainAxisAlignment:
|
||
MainAxisAlignment.center,
|
||
children: [
|
||
Image.asset(
|
||
getDisCoverImage('wx'),
|
||
width: 20.sp,
|
||
),
|
||
SizedBox(
|
||
width: 2.sp,
|
||
),
|
||
Text(
|
||
'想要联系方式',
|
||
style: TextStyle(
|
||
color: Colors.white,
|
||
fontSize: 13.sp),
|
||
),
|
||
],
|
||
),
|
||
)
|
||
],
|
||
),
|
||
)
|
||
: Container(
|
||
alignment: Alignment.centerLeft,
|
||
// width: 200.sp,
|
||
// color: Colors.red,
|
||
margin:
|
||
EdgeInsets.only(left: 5.sp, bottom: 5.sp),
|
||
child: Row(
|
||
mainAxisAlignment: MainAxisAlignment.start,
|
||
children: [
|
||
userWxStatusWidget(
|
||
!logic.userInfoBean!.contact!
|
||
.contains('*'),
|
||
logic.userInfoBean!.contact!,
|
||
logic.userId.toString(),
|
||
logic.userInfoBean!.contactType!,
|
||
logic.userInfoBean!.avatar!, () {
|
||
logic.fetchUserInfo(
|
||
"${Api.getUserInfoTA + logic.userId}/home");
|
||
}),
|
||
],
|
||
))
|
||
: Container())
|
||
: MyAppBar(
|
||
centerTitle: logic.userInfoBean != null
|
||
? "${logic.userInfoBean!.nickname}"
|
||
: "个人主页",
|
||
),
|
||
body: Stack(
|
||
// fit: StackFit.expand,
|
||
children: [
|
||
Container(
|
||
height: Get.height,
|
||
width: Get.width,
|
||
// color: Colors.red,
|
||
child: NestedScrollView(
|
||
// controller: scrollController,
|
||
headerSliverBuilder: (context, isScrolled) {
|
||
return [
|
||
SliverToBoxAdapter(
|
||
child: buildContent(logic),
|
||
),
|
||
SliverOverlapAbsorber(
|
||
handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),
|
||
sliver:SliverPersistentHeader(
|
||
pinned: true,
|
||
|
||
delegate: MySliverAppBarDelegate(
|
||
minHeight: 35,
|
||
maxHeight: 35,
|
||
child: titleTab(logic),
|
||
),
|
||
)),
|
||
];
|
||
},
|
||
body: contentWidget(logic),
|
||
)),
|
||
Positioned(
|
||
bottom: 27.sp,
|
||
width: Get.width,
|
||
child: _meInfoButton(logic),
|
||
),
|
||
// !logic.isShowAlbum && logic.isMe
|
||
// ? Positioned(
|
||
// bottom: 36.sp,
|
||
// right: 10.sp,
|
||
// child: GestureDetector(
|
||
// onTap: () async {
|
||
// List<MyConfigData> numbers = [];
|
||
//
|
||
// var data = await Get.toNamed(Routes.CallOutPage,
|
||
// arguments: {'numbers': numbers});
|
||
// },
|
||
// child: Image.asset(
|
||
// getCircleImage('send_msg'),
|
||
// width: 60.sp,
|
||
// )))
|
||
// : Container()
|
||
],
|
||
),
|
||
),
|
||
);
|
||
}
|
||
|
||
Widget _meInfoButton(UserinfoLogic controller) {
|
||
if (controller.isMe) {
|
||
return GestureDetector(
|
||
onTap: () async {
|
||
await Get.toNamed(
|
||
Routes.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 == Routes.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(0xffDC5BFD),
|
||
Color(0xff06F9FA),
|
||
],
|
||
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(
|
||
width: Get.width,
|
||
padding: EdgeInsets.symmetric(vertical: 14.sp),
|
||
child: Column(
|
||
children: [
|
||
Container(
|
||
height: 68.sp,
|
||
padding: EdgeInsets.symmetric(horizontal: 15.sp),
|
||
child: Row(
|
||
crossAxisAlignment: CrossAxisAlignment.start,
|
||
children: [
|
||
_imagelistView(controller),
|
||
Expanded(
|
||
child: buildUserContainer(controller),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
Container(
|
||
padding: EdgeInsets.symmetric(
|
||
horizontal: 15.sp,
|
||
),
|
||
margin: EdgeInsets.only(top: 13.sp),
|
||
child: Row(
|
||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||
children: [
|
||
Row(
|
||
children: [
|
||
Text(
|
||
userInfoBean?.nickname ?? "",
|
||
style: TextStyle(
|
||
color: Color.fromRGBO(247, 250, 250, 1.0),
|
||
fontSize: 14.sp,
|
||
),
|
||
),
|
||
SizedBox(width: 8.sp),
|
||
if ((controller.userInfoBean?.mark ?? 0) > 0)
|
||
UserTagWidget(controller.userInfoBean!.mark!),
|
||
],
|
||
),
|
||
Container(
|
||
child: 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(0x00000000),
|
||
),
|
||
),
|
||
logic.isBlack || logic.isDestroy || logic.isBlackBeen
|
||
? Container()
|
||
: Text(
|
||
controller.onLineCity,
|
||
style: TextStyle(
|
||
fontSize: 12.sp,
|
||
color: logic.isOnline
|
||
? const Color(0xFF00FFF4)
|
||
: const Color(0xFF00FFF4),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
Container(
|
||
padding: EdgeInsets.symmetric(
|
||
horizontal: 15.sp,
|
||
),
|
||
margin: EdgeInsets.only(top: 4.sp),
|
||
child: Row(
|
||
children: [
|
||
logic.isBlack || logic.isDestroy || logic.isBlackBeen
|
||
? Container()
|
||
: _buildInfoRow(controller),
|
||
Expanded(child: Container()),
|
||
Text(
|
||
'常住城市:' + (controller.userInfoBean?.city ?? ''),
|
||
style: TextStyle(
|
||
fontSize: 12.sp,
|
||
color: logic.isOnline
|
||
? const Color(0xFF00FFF4)
|
||
: const Color(0xFF00FFF4),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
SizedBox(
|
||
height: 78.sp,
|
||
child: logic.isBlack || logic.isDestroy || logic.isBlackBeen
|
||
? Container()
|
||
: _buildInterestsListView(interests),
|
||
),
|
||
// if (!logic.isMe)
|
||
// logic.userInfoBean != null
|
||
// ? logic.userInfoBean!.contact!.isNotEmpty
|
||
// ? Container(
|
||
// alignment: Alignment.centerLeft,
|
||
// // width: 200.sp,
|
||
// // color: Colors.red,
|
||
// margin: EdgeInsets.only(left: 5.sp, bottom: 5.sp),
|
||
// child: Row(
|
||
// mainAxisAlignment: MainAxisAlignment.start,
|
||
// children: [
|
||
// wxStatusWidget(
|
||
// !logic.userInfoBean!.contact!.contains('*'),
|
||
// logic.userInfoBean!.contact!,
|
||
// logic.userId.toString(),
|
||
// logic.userInfoBean!.contactType!,
|
||
// logic.userInfoBean!.avatar!, () {
|
||
// logic.fetchUserInfo(
|
||
// "${Api.getUserInfoTA + logic.userId}/home");
|
||
// }),
|
||
// ],
|
||
// ))
|
||
// : Container()
|
||
// : Container(),
|
||
if (logic.userInfoBean != null && logic.giftList.isNotEmpty)
|
||
GestureDetector(
|
||
onTap: () async {
|
||
var result = await Get.toNamed(Routes.GiftShopPage,
|
||
arguments: logic.userId);
|
||
logic.loadGiftListData();
|
||
},
|
||
child: Container(
|
||
margin: EdgeInsets.only(
|
||
top: 0.sp, left: 15.sp, right: 10.sp, bottom: 0.sp),
|
||
padding: EdgeInsets.only(left: 12.sp, right: 12.sp, top: 16.sp),
|
||
height: 134.sp,
|
||
decoration: BoxDecoration(
|
||
color: Color(0x1AFFFFFF),
|
||
borderRadius: BorderRadius.circular(14.sp)),
|
||
child: Column(
|
||
children: [
|
||
Container(
|
||
child: Row(
|
||
children: [
|
||
Image.asset(
|
||
getMineImage('gift_shop'),
|
||
width: 65.sp,
|
||
),
|
||
Expanded(child: Container()),
|
||
Text(
|
||
logic.toUser.isNotEmpty ? '贡献之星' : '贡献之星还在路上',
|
||
style: TextStyle(
|
||
color: Colors.white,
|
||
fontSize: 14.sp,
|
||
),
|
||
),
|
||
if (logic.toUser.isNotEmpty)
|
||
SizedBox(
|
||
width: 6.sp,
|
||
),
|
||
if (logic.toUser.isNotEmpty)
|
||
Text(
|
||
'${logic.toUser['nickname']}',
|
||
style: TextStyle(
|
||
color: AppColor.mainColor,
|
||
fontSize: 14.sp,
|
||
),
|
||
),
|
||
SizedBox(
|
||
width: 8.sp,
|
||
),
|
||
Image.asset(
|
||
getMineImage('chevron_left'),
|
||
width: 14.sp,
|
||
),
|
||
],
|
||
),
|
||
),
|
||
Expanded(
|
||
child: Container(
|
||
margin: EdgeInsets.only(top: 10.sp),
|
||
alignment: Alignment.centerLeft,
|
||
child: ListView.builder(
|
||
scrollDirection: Axis.horizontal,
|
||
itemCount: logic.giftList.length,
|
||
itemBuilder: (BuildContext context, int giftIndex) {
|
||
var info = logic.giftList[giftIndex];
|
||
bool isGet = false;
|
||
int num = 0;
|
||
logic.recevigiftList.forEach((element) {
|
||
if (element['giftId'] == info['id']) {
|
||
isGet = true;
|
||
num = element['num'];
|
||
}
|
||
});
|
||
return GestureDetector(
|
||
onTap: () {},
|
||
child: Container(
|
||
margin: EdgeInsets.only(right: 10.sp),
|
||
child: Column(
|
||
mainAxisAlignment: MainAxisAlignment.center,
|
||
children: [
|
||
Stack(children: [
|
||
Opacity(
|
||
opacity: !isGet ? 0.6 : 1,
|
||
child: Image.network(
|
||
info['icon'],
|
||
width: 50.sp,
|
||
height: 50.sp,
|
||
fit: BoxFit.cover,
|
||
),
|
||
),
|
||
]),
|
||
SizedBox(
|
||
height: 6.sp,
|
||
),
|
||
GestureDetector(
|
||
onTap: () {
|
||
logic.sendGiftData(
|
||
logic.imId,
|
||
info['id'].toString(),
|
||
logic.imId.split('_').last,
|
||
);
|
||
},
|
||
child: Container(
|
||
height: 20.sp,
|
||
width: 52.sp,
|
||
// padding: EdgeInsets.only(left: 5.sp,right: 5.sp),
|
||
alignment: Alignment.center,
|
||
decoration: BoxDecoration(
|
||
gradient:
|
||
AppColor.mainVerLinearGradient,
|
||
borderRadius:
|
||
BorderRadius.circular(10.sp)),
|
||
child: Text(
|
||
!isGet ? '点亮' : '赠送',
|
||
style: TextStyle(
|
||
color: Colors.white,
|
||
fontSize: 11.sp),
|
||
),
|
||
),
|
||
)
|
||
],
|
||
),
|
||
),
|
||
);
|
||
}),
|
||
))
|
||
],
|
||
),
|
||
),
|
||
),
|
||
// 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),
|
||
// ],
|
||
// ),
|
||
// ),
|
||
}
|
||
|
||
contentWidget(UserinfoLogic controller) {
|
||
return Column(
|
||
children: [
|
||
SizedBox(height: 35.sp,),
|
||
Expanded(
|
||
child: TabBarView(
|
||
controller: _tabController,
|
||
// 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: 15.sp, horizontal: 15.sp),
|
||
itemBuilder: (context, index) {
|
||
final interest = interests[index];
|
||
return GestureDetector(
|
||
onTap: () {
|
||
Get.toNamed(Routes.SignalCircleListPage,
|
||
arguments: interests[index].id);
|
||
},
|
||
child: Container(
|
||
margin: EdgeInsets.only(right: 11.sp),
|
||
decoration: BoxDecoration(
|
||
borderRadius: BorderRadius.circular(8.0),
|
||
gradient: const LinearGradient(
|
||
colors: [
|
||
Color(0xFF06F9FA),
|
||
Color(0xFFDC5BFD),
|
||
],
|
||
),
|
||
color: const Color(0xFF392D53),
|
||
),
|
||
child: Container(
|
||
margin: EdgeInsets.all(0.2.sp),
|
||
padding: EdgeInsets.only(left: 5.sp, right: 0.sp, top: 5.sp),
|
||
decoration: BoxDecoration(
|
||
borderRadius: BorderRadius.circular(8.0),
|
||
color: const Color(0xFF392D53),
|
||
),
|
||
child: Column(
|
||
crossAxisAlignment: CrossAxisAlignment.start,
|
||
children: [
|
||
Container(
|
||
// color: Colors.red,
|
||
child: Row(
|
||
children: [
|
||
Text(
|
||
interest.title,
|
||
style: TextStyle(
|
||
fontSize: 13.sp,
|
||
color: Colors.white,
|
||
),
|
||
),
|
||
Container(
|
||
margin: EdgeInsets.only(
|
||
bottom: 2.sp,
|
||
),
|
||
child: Icon(
|
||
Icons.keyboard_arrow_right,
|
||
color: Colors.white,
|
||
size: 18.sp,
|
||
),
|
||
)
|
||
],
|
||
),
|
||
),
|
||
Text(
|
||
'${interest.viewTotal}人看过',
|
||
style: TextStyle(
|
||
fontSize: 13.sp,
|
||
color: AppColor.mainColor,
|
||
),
|
||
),
|
||
],
|
||
)),
|
||
),
|
||
);
|
||
},
|
||
);
|
||
}
|
||
|
||
Widget titleTab(UserinfoLogic controller) {
|
||
String buttonText = "";
|
||
|
||
if (controller.isMe) {
|
||
if (logic.isShowAlbum) {
|
||
buttonText = controller.isEdit ? "完成" : "管理";
|
||
} else {
|
||
buttonText = "发布喊话";
|
||
}
|
||
} else {
|
||
buttonText = controller.isUrgeStatus ? "已催更" : "催更";
|
||
}
|
||
return Container(
|
||
alignment: Alignment.centerLeft,
|
||
padding: EdgeInsets.only(left: 0, right: 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: 12.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()
|
||
: _tabController.index == 0
|
||
? logic.isShowAlbum && logic.isMe
|
||
? Container(
|
||
child: ShaderMask(
|
||
shaderCallback: (Rect bounds) {
|
||
return LinearGradient(
|
||
begin: Alignment.centerRight,
|
||
end: Alignment.centerLeft,
|
||
colors: [Color(0xffF657FF), AppColor.mainColor],
|
||
).createShader(Offset.zero & bounds.size);
|
||
},
|
||
child: Text(
|
||
'真实露脸照更受欢迎',
|
||
style: TextStyle(
|
||
fontSize: 12.sp,
|
||
fontWeight: FontWeight.w600,
|
||
color: Colors.white),
|
||
),
|
||
),
|
||
)
|
||
: Container()
|
||
: _tabController.index == 1 && logic.isMe ? GestureDetector(
|
||
onTap: () {
|
||
if (!logic.isShowAlbum && controller.isMe) {
|
||
List<MyConfigData> numbers = [];
|
||
var data = Get.toNamed(Routes.CallOutPage,
|
||
arguments: {'numbers': numbers});
|
||
return;
|
||
}
|
||
if (controller.isMe) {
|
||
controller.isEdit = !controller.isEdit;
|
||
controller.update();
|
||
} else {
|
||
controller.urgeChange();
|
||
}
|
||
},
|
||
child: Container(
|
||
margin: EdgeInsets.only(left: 10.sp),
|
||
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(
|
||
buttonText,
|
||
style: const TextStyle(
|
||
color: Colors.white,
|
||
fontSize: 12,
|
||
),
|
||
),
|
||
),
|
||
) : Container(),
|
||
],
|
||
),
|
||
);
|
||
}
|
||
|
||
Widget _imageAdapter(UserinfoLogic controller) {
|
||
//print(controller.state.imaglist);
|
||
|
||
// :
|
||
return Container(
|
||
// margin: EdgeInsets.only( 0.sp),
|
||
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: Row(
|
||
mainAxisAlignment: MainAxisAlignment.center,
|
||
children: [
|
||
Text(
|
||
controller.likeMeCount.toString(),
|
||
style: TextStyle(color: AppColor.mainColor),
|
||
),
|
||
Text(
|
||
'位圈友感兴趣,其中',
|
||
style: const TextStyle(color: Colors.white30),
|
||
),
|
||
Text(
|
||
controller.imageUrgeCount.toString(),
|
||
style: TextStyle(color: AppColor.mainColor),
|
||
),
|
||
Text(
|
||
'位已催您更新',
|
||
style: const TextStyle(color: Colors.white30),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
controller.state.imaglist.isEmpty && !controller.isMe
|
||
? Center(
|
||
child: Column(
|
||
mainAxisAlignment: MainAxisAlignment.start,
|
||
children: [
|
||
const SizedBox(
|
||
height: 30,
|
||
),
|
||
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(
|
||
physics: ClampingScrollPhysics(),
|
||
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,
|
||
controller.state.imaglist[index - 1].isTop,
|
||
),
|
||
),
|
||
);
|
||
}
|
||
} else {
|
||
return Container(
|
||
margin: EdgeInsets.all(5.sp),
|
||
child: Center(
|
||
child: _buildImageItem(
|
||
controller.state.imaglist[index].urlThumb,
|
||
controller,
|
||
index,
|
||
0),
|
||
),
|
||
);
|
||
}
|
||
},
|
||
),
|
||
),
|
||
],
|
||
),
|
||
],
|
||
),
|
||
);
|
||
}
|
||
|
||
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),
|
||
],
|
||
);
|
||
}
|
||
|
||
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: TextStyle(color: Colors.white, fontSize: 15.sp),
|
||
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(Routes.SwiperPage,
|
||
arguments: {'imaglist': imgList, 'index': 0});
|
||
},
|
||
child: CachedImg(
|
||
fit: BoxFit.cover,
|
||
imageUrl: controller.userInfoBean != null
|
||
? controller.userInfoBean!.avatar
|
||
: "",
|
||
width: 66.sp,
|
||
height: 66.sp,
|
||
),
|
||
),
|
||
);
|
||
}
|
||
}
|
||
|
||
Widget _buildImageItem(
|
||
String url, UserinfoLogic controller, int index, int isTop) {
|
||
return Stack(
|
||
alignment: Alignment.center,
|
||
children: [
|
||
SizedBox(
|
||
width: double.infinity,
|
||
height: double.infinity,
|
||
child: ClipRRect(
|
||
borderRadius: BorderRadius.circular(0.0),
|
||
child: GestureDetector(
|
||
onLongPress: () {
|
||
if (logic.isMe) {
|
||
showImgTipPop(url, index, isTop == 1, controller);
|
||
}
|
||
},
|
||
onTap: () {
|
||
List<String> imaglist = [];
|
||
for (var element in controller.state.imaglist) {
|
||
imaglist.add(element.url);
|
||
}
|
||
Get.toNamed(Routes.SwiperPage, arguments: {
|
||
'imaglist': imaglist,
|
||
'index': index,
|
||
'isVague': homeLogic.model!.vip == 0
|
||
})!
|
||
.then((value) => logic.update());
|
||
},
|
||
child: Image.network(
|
||
fit: BoxFit.cover,
|
||
url,
|
||
),
|
||
),
|
||
),
|
||
),
|
||
if (!logic.isMe && index > 0 && homeLogic.model!.vip == 0)
|
||
GestureDetector(
|
||
behavior: HitTestBehavior.opaque,
|
||
onTap: () async {
|
||
showOKToast('开通会员后可以解锁TA和其他所有人的形象照');
|
||
await showOepnVipDialog();
|
||
homeLogic.loadMyInfoData();
|
||
},
|
||
child: ClipRect(
|
||
child: BackdropFilter(
|
||
filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5),
|
||
child: Container(
|
||
color: Colors.transparent,
|
||
),
|
||
),
|
||
)),
|
||
if (!logic.isMe && index > 0 && homeLogic.model!.vip == 0)
|
||
Positioned(
|
||
child: Column(
|
||
mainAxisAlignment: MainAxisAlignment.center,
|
||
children: [
|
||
GestureDetector(
|
||
onTap: () async {
|
||
showOKToast('开通会员后可以解锁TA和其他所有人的形象照');
|
||
await showOepnVipDialog();
|
||
homeLogic.loadMyInfoData();
|
||
},
|
||
child: Container(
|
||
height: 30.sp,
|
||
width: 55.sp,
|
||
decoration: BoxDecoration(
|
||
gradient: AppColor.mainVerLinearGradient,
|
||
borderRadius: BorderRadius.circular(15.sp)),
|
||
alignment: Alignment.center,
|
||
child: Text(
|
||
'解锁全部',
|
||
style: TextStyle(color: Colors.white, fontSize: 12.sp),
|
||
),
|
||
),
|
||
)
|
||
],
|
||
),
|
||
),
|
||
if (isTop == 1)
|
||
Positioned(
|
||
top: 0,
|
||
left: 5,
|
||
child: Container(
|
||
height: 25.sp,
|
||
width: 25.sp,
|
||
alignment: Alignment.center,
|
||
decoration: BoxDecoration(
|
||
color: Colors.black.withOpacity(0.4),
|
||
borderRadius: BorderRadius.circular(15.sp)),
|
||
child: Icon(
|
||
Icons.vertical_align_top_sharp,
|
||
color: AppColor.mainColor,
|
||
size: 20.sp,
|
||
),
|
||
),
|
||
),
|
||
],
|
||
);
|
||
}
|
||
|
||
showImgTipPop(String url, int index, bool isTop, var contrller) {
|
||
Get.bottomSheet(
|
||
CupertinoActionSheet(
|
||
title: Text(
|
||
'形象照操作',
|
||
style: TextStyle(fontSize: 22),
|
||
), //标题
|
||
//提示内容
|
||
actions: <Widget>[
|
||
CupertinoActionSheetAction(
|
||
onPressed: () {
|
||
Get.back();
|
||
logic.setTopAlbum(!isTop, index);
|
||
},
|
||
child: Text(isTop ? '取消置顶' : '置顶'),
|
||
),
|
||
CupertinoActionSheetAction(
|
||
onPressed: () {
|
||
Get.back();
|
||
_showDelImgDialog(Get.context!, logic, index);
|
||
// toast('举报成功,等待反馈!');
|
||
},
|
||
child: Text('删除'),
|
||
),
|
||
],
|
||
cancelButton: CupertinoActionSheetAction(
|
||
//取消按钮
|
||
onPressed: () {
|
||
Get.back();
|
||
},
|
||
child: Text('取消'),
|
||
),
|
||
),
|
||
isScrollControlled: true);
|
||
}
|
||
|
||
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);
|
||
if (logic.userInfoBean == null) return;
|
||
Get.bottomSheet(
|
||
UserShare(
|
||
userImgUrl: logic.userInfoBean!.avatar!,
|
||
userNIckName: '',
|
||
userInfoBean: logic.userInfoBean!),
|
||
isScrollControlled: true);
|
||
},
|
||
child: Column(
|
||
mainAxisAlignment: MainAxisAlignment.center,
|
||
children: [
|
||
Image(
|
||
image: AssetImage(getMsgImage("msg_share")),
|
||
width: 40.sp,
|
||
height: 40.sp,
|
||
),
|
||
Container(
|
||
margin: EdgeInsets.only(top: 2.sp),
|
||
child: const Text(
|
||
"分享",
|
||
style: TextStyle(color: Colors.white),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
GestureDetector(
|
||
onTap: () {
|
||
Navigator.pop(context);
|
||
Get.toNamed(Routes.ReportPage,
|
||
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,
|
||
),
|
||
),
|
||
),
|
||
)
|
||
],
|
||
)
|
||
],
|
||
),
|
||
)
|
||
],
|
||
),
|
||
),
|
||
);
|
||
},
|
||
);
|
||
}
|
||
|
||
void starTimer() {
|
||
timer = Timer.periodic(const Duration(seconds: 1), (t) async {
|
||
if (countdown > 0) {
|
||
countdown--;
|
||
} else {
|
||
bool isTip = await logic.checkIsShowTip();
|
||
if (isTip && !logic.isMe && !logic.isLike) {
|
||
showFloatingButtonOverlay(context, logic.userInfoBean!.nickname ?? '',
|
||
logic.ageMsg, logic.userInfoBean!.avatarThumb, 0, () {
|
||
logic.setLike();
|
||
});
|
||
}
|
||
timer?.cancel(); // 倒计时结束,取消定时器
|
||
}
|
||
});
|
||
}
|
||
}
|
||
|
||
class ScrollViewIsEnd {
|
||
bool isEnd;
|
||
ScrollViewIsEnd(this.isEnd);
|
||
}
|
||
|
||
class ScrollViewScrollTop {}
|