删除多余文件

This commit is contained in:
CYH 2024-01-02 17:54:40 +08:00
parent 0db8ba7a3b
commit 3cd8c1aa43
3 changed files with 0 additions and 1034 deletions

View File

@ -1,10 +0,0 @@
import 'package:get/get.dart';
import 'logic.dart';
class LikeBinding extends Bindings {
@override
void dependencies() {
Get.lazyPut(() => LikeLogic());
}
}

View File

@ -1,205 +0,0 @@
import 'package:circle_app/app/circle/logic.dart';
import 'package:circle_app/app/home/logic.dart';
import 'package:circle_app/app/invite/logic.dart';
import 'package:circle_app/network/api.dart';
import 'package:circle_app/network/dio_manager.dart';
import 'package:circle_app/util/util.dart';
import 'package:flutter/cupertino.dart';
import 'package:get/get.dart';
class LikeLogic extends GetxController {
int currentIndex = -1;
int page = 1;
int myPage = 1;
InterestsBean circle = InterestsBean(lists: []);
InterestsBean mycircle = InterestsBean(lists: []);
ScrollController leftCtr = ScrollController();
ScrollController rightCtr = ScrollController();
ScrollController myCircleCtr = ScrollController();
bool isMore = true;
bool isMyMore = true;
bool isLoad = true;
List<bool> hasNewList = [];
Data? homeData;
@override
void onInit() {
// TODO: implement onInit
super.onInit();
// leftCtr.addListener(() {
// if (leftCtr.position.pixels ==
// leftCtr.position.maxScrollExtent) {
// loadMore();
// }
// });
rightCtr.addListener(() {
if (rightCtr.position.pixels ==
rightCtr.position.maxScrollExtent) {
loadMore();
}
});
//
// myCircleCtr.addListener(() {
// if (myCircleCtr.position.pixels ==
// myCircleCtr.position.maxScrollExtent) {
// loadMyMore();
// }
// });
loadInviteData();
loadCircleListData();
loadMyCircleData();
}
loadData() {
loadInviteData();
loadCircleListData();
loadMyCircleData();
}
loadInviteData() async {
var data = await DioManager.instance.get(url: Api.inviteMainPage);
if (data['code'] == 200) {
Autogenerated result = Autogenerated.fromJson(data);
homeData = result.data;
}
}
loadCircleListData() async {
var data = await DioManager.instance.get(
url: Api.getCircleInterests, params: {"page": page, 'page_size': 20});
var bean = BaseResponse<InterestsBean>.fromJson(
data, (data) => InterestsBean.fromJson(data));
if (bean.data is InterestsBean && bean.isSuccess()) {
if (page == 1) {
circle = bean.data!;
} else {
circle.lists.addAll(bean.data!.lists);
}
isLoad = false;
if (bean.data!.lists.length < 20) {
isMore = false;
}
update();
}
}
loadMyCircleData() async {
var data = await DioManager.instance
.get(url: Api.getMyCircleAll);
// var bean = BaseResponse<InterestsBean>.fromJson(
// data, (data) => InterestsBean.fromJson(data));
if (data['code'] == 200) {
List circleList = data['data'];
if (circleList.isNotEmpty) {
List<Circle> infoList = [];
circleList.forEach((element) {
var info = Circle.fromJson(element);
infoList.add(info);
});
mycircle.lists = infoList;
if (currentIndex >= mycircle.lists.length - 1) {
currentIndex = mycircle.lists.length -1;
}
loadCalloutsNew();
}
}
update();
}
loadMore() {
if (isMore) {
page = page + 1;
loadCircleListData();
}
}
void relaodData() {
page = 1;
loadCircleListData();
}
loadMyMore() {
if (isMyMore) {
myPage = myPage + 1;
loadMyCircleData();
}
}
void relaodMyData() {
myPage = 1;
loadMyCircleData();
}
outCircle(String interest_id, bool isStatus) async {
var data = await DioManager.instance.post(
url: "${Api.outCrrcle}$interest_id/join",
params: {"status": isStatus ? "0" : "1"});
var bean = BaseResponse<String>.fromJson(data, (data) => data);
if (bean.code == 200) {
circle.lists.forEach((element) {
if (element.id.toString() == interest_id.toString()) {
element.isJoin = !isStatus;
}
});
relaodMyData();
}
showOKToast(bean.msg);
}
setTopCircle(String interest_id,bool isStatus) async {
var data = await DioManager.instance.post(
url: Api.circleTop,
params: {"interestId": interest_id,'isTop' :isStatus ? 1 : 0});
var bean = BaseResponse<String>.fromJson(data, (data) => data);
if (bean.code == 200) {
relaodMyData();
}
showOKToast(bean.msg);
}
loadCalloutsNew() async {
List<String> idList = [];
mycircle.lists.forEach((element) {
idList.add(element.id.toString());
});
var data = await DioManager.instance.post(
url:Api.calloutsNew,
params: {"interestIds":idList});
if (data['code'] == 200) {
hasNewList.clear();
List infoList = data['data'];
bool isHasNew = false;
if (infoList.isNotEmpty) {
infoList.forEach((element) {
// "hasNew" -> false
hasNewList.add(element['hasNew']);
if (element['hasNew']) {
isHasNew = true;
}
});
}
HomeLogic logic = Get.find<HomeLogic>();
logic.showcirlceUnred.value = isHasNew;
// logic.update();
// update();
}
}
}

View File

@ -1,819 +0,0 @@
import 'package:cached_network_image/cached_network_image.dart';
import 'package:circle_app/app/circle/logic.dart';
import 'package:circle_app/app/circle/widgets/info_list_view.dart';
import 'package:circle_app/app/select_circle/logic.dart';
import 'package:circle_app/common/Widgets/circle_share.dart';
import 'package:circle_app/common/Widgets/text_more.dart';
import 'package:circle_app/main.dart';
import 'package:circle_app/network/dio_manager.dart';
import 'package:circle_app/router/app_routers.dart';
import 'package:circle_app/util/util.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'logic.dart';
class LikePage extends StatefulWidget {
LikePage({Key? key}) : super(key: key);
@override
State<LikePage> createState() => _LikePageState();
}
class _LikePageState extends State<LikePage> with RouteAware {
final ctr = Get.lazyPut(() => LikeLogic());
final logic = Get.find<LikeLogic>();
@override
void didChangeDependencies() {
// TODO: implement didChangeDependencies
super.didChangeDependencies();
///
routeObserver.subscribe(this, ModalRoute.of(context) as PageRoute);
}
@override
void dispose() {
routeObserver.unsubscribe(this);
super.dispose();
}
void didPopNext() {
print('didPopNext');
logic.loadMyCircleData();
}
///
void didPush() {
print('didPopNext');
}
void didPop() {
print('didPop');
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.transparent,
body: SafeArea(
child: GetBuilder<LikeLogic>(builder: (logic) {
return logic.isLoad
? loaddingWidget(true)
: Container(
width: Get.width,
height: Get.height,
child: Row(
children: [
Container(
width: 65.sp,
child: Column(
children: [
leftItem('', logic.currentIndex == -1, false, -1),
Container(
alignment: Alignment.center,
height: 20,
child: Container(
width: 33.sp,
height: 1.sp,
color: Color(0x4DFFFFFF),
)),
Expanded(
child: MediaQuery.removePadding(
removeTop: true,
context: context,
child: ListView.builder(
controller: logic.myCircleCtr,
itemBuilder: (context, index) {
return leftItem(
logic.mycircle.lists[index].title,
logic.currentIndex == index,
logic.hasNewList.length > index
? logic.hasNewList[index]
: false,
index);
},
itemCount: logic.mycircle.lists.length,
)))
],
)),
Expanded(
child: Container(
child: logic.currentIndex == -1
? circleInfoListView()
: InfoListView(
logic.currentIndex,
logic.mycircle.lists[logic.currentIndex],
logic,
key: ValueKey(
'${logic.mycircle.lists[logic.currentIndex].id.toString() + logic.currentIndex.toString()}'),
)))
],
),
);
}),
),
);
}
circleInfoListView() {
return Stack(
fit: StackFit.expand,
children: [
RefreshIndicator(
onRefresh: () async {
logic.relaodData();
},
child: ListView.builder(
controller: logic.rightCtr ,
itemBuilder: (context, index) {
if (index == logic.circle.lists.length) {
return loaddingWidget(logic.isMore);
}
return circleInfoItem(logic.circle.lists[index],index);
},
itemCount: logic.circle.lists.length + 1,
)),
Positioned(
bottom: 36.sp,
right: 10.sp,
child: GestureDetector(
onTap: () async {
var data = await Get.toNamed(
AppRoutes.Call_out,
);
},
child: Image.asset(
getCircleImage('send_msg'),
width: 70.sp,
)))
],
);
}
goDetailPage(Circle bean,int index) async {
// if (!bean.isJoin) {
// await logic.outCircle(
// bean.id.toString(),
// bean.isJoin);
// }
var result = await Get.toNamed(AppRoutes.Signal_circle_list, arguments: bean.id);
var data = await DioManager.instance.get(
url: "/up-service/interest/${bean.id}",);
if (data["code"] == 200) {
var bean = Circle.fromJson(data['data']);
logic.circle.lists[index] = bean;
if (mounted) {
setState(() {
});
}
}
}
goAndJoinDetailPage(Circle bean,int index) async {
if (!bean.isJoin) {
await logic.outCircle(
bean.id.toString(),
bean.isJoin);
}
var result = await Get.toNamed(AppRoutes.Signal_circle_list, arguments: bean.id);
var data = await DioManager.instance.get(
url: "/up-service/interest/${bean.id}",);
if (data["code"] == 200) {
var bean = Circle.fromJson(data['data']);
logic.circle.lists[index] = bean;
if (mounted) {
setState(() {
});
}
}
}
circleInfoItem(Circle bean,int index) {
List<JoinUser> urlList = bean.lastJoinUsers;
List<Widget> widgets = [];
int i = 0;
// print(urlList);
if (null != urlList) {
urlList.forEach((element) {
if (widgets.length > 2) {
return;
}
widgets.add(Positioned(
left: 15.sp * i,
child: circleWidget(
element.avatar! ??
"https://qiniuyun.leyuan666.com/quanzi/avatar/default.png",
element.id.toString()),
));
i++;
});
}
return GestureDetector(
onTap: () async {
goDetailPage(bean, index);
},
child: Container(
margin: EdgeInsets.only(bottom: 10.sp),
child: Column(
children: [
ClipRRect(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(10.sp),
topRight: Radius.circular(10.sp)),
child: Container(
padding: EdgeInsets.only(left: 12.sp, right: 12.sp),
height: 72.sp,
decoration: BoxDecoration(
image: DecorationImage(
fit: BoxFit.fill,
image: AssetImage(getCircleImage('top_circle_bg')))),
child: Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Container(
width: 42.sp,
height: 42.sp,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8.0),
gradient: const LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [
Color(0xFF71F3F2),
Color(0xFFF558FF),
],
stops: [0.0365, 0.9427],
),
),
padding: EdgeInsets.all(1.sp),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: CachedNetworkImage(
imageUrl: bean.image,
width: 40.sp,
height: 40.sp,
memCacheHeight: 40,
memCacheWidth: 40,
fit: BoxFit.cover),
),
),
Expanded(
child: Container(
padding: EdgeInsets.only(left: 8.sp, top: 12.sp),
// alignment: Alignment.,
height: 72.sp,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
bean.title,
style: TextStyle(
color: Colors.white,
fontSize: 18.sp,
fontWeight: FontWeight.w600),
),
SizedBox(
height: 4.sp,
),
Text(
'${convertToTenThousand(bean.viewTotal)}人看过',
textAlign: TextAlign.left,
style: TextStyle(
color: const Color(0xff03FEFB),
fontSize: 12.sp,
),
),
],
),
)),
GestureDetector(
//
onTap: () async {
if (bean.isJoin) {
Get.bottomSheet(CircleShare('', '', bean),
isScrollControlled: true, enableDrag: false);
} else {
goAndJoinDetailPage(bean, index);
}
},
child: Stack(
alignment: Alignment.center,
children: [
Image.asset(
getCircleImage('add'),
width: 77.sp,
),
Text(
!bean.isJoin ? '申请加入' : '分享有奖',
style: TextStyle(
color: Colors.white, fontSize: 12.sp),
)
],
))
],
),
)),
Container(
padding: EdgeInsets.only(left: 12.sp, right: 12.sp),
// height:urlList.length==0?47.sp: 118.sp,
decoration: BoxDecoration(
image: DecorationImage(
fit: BoxFit.fill,
image: AssetImage(getCircleImage('circle_desc')))),
child: Container(
margin: EdgeInsets.only(top: 10.sp, bottom: 10.sp),
child: Column(
children: [
Container(
margin: EdgeInsets.only(bottom: 7.sp),
width: Get.width - 80.sp,
// height: 50.sp,
child: HideText(
text: bean.intro,
maxWidth: Get.width - 89.sp,
additionText: '查看更多',
maxLines: 3,
style:
TextStyle(color: Colors.white, fontSize: 17.sp),
additionStyle: TextStyle(
color: const Color(0xFFFF4DF6), fontSize: 17.sp),
onTap: () {
goDetailPage(bean, index);
},
)),
urlList.length == 0
? Container()
: Row(
children: [
SizedBox(
height: 30.sp,
width:
30.0.sp + 14.sp * (widgets.length - 1.sp),
child: Stack(
alignment: Alignment.center,
children: widgets,
),
),
SizedBox(
width: 4.sp,
),
Text(
'${convertToTenThousand(bean.joinTotal)}圈友加入',
style: TextStyle(
color: Colors.white, fontSize: 12.sp),
),
SizedBox(
width: 4.sp,
),
// GestureDetector(
// onTap: () {
// // Get.bottomSheet(
// // CircleShare(logic.homeData!.inviteCode!,logic.homeData!.link!,bean), isScrollControlled: true,
// // enableDrag: false
// // );
// },
// behavior: HitTestBehavior.opaque,
// child: Container(
// height: 30.sp,
// alignment: Alignment.center,
// child: Image.asset(
// getCircleImage('play'),
// width: 20.sp,
// ),
// ),
// )
],
),
],
),
),
),
],
),
),
);
}
circleWidget(String url, String userId, {double width = 24}) {
return GestureDetector(
onTap: () {
Get.toNamed(AppRoutes.UserInfoActivity, arguments: userId);
},
child: Stack(
alignment: Alignment.center,
children: [
Image.asset(
getCircleImage('avatar_bg'),
width: width.sp,
),
ClipOval(
child: CachedNetworkImage(
imageUrl: url ??
"https://qiniuyun.leyuan666.com/quanzi/avatar/default.png",
width: (width - 1).sp,
height: (width - 1).sp,
fit: BoxFit.cover,
memCacheHeight: width.toInt() - 1,
memCacheWidth: width.toInt() - 1,
),
)
],
));
}
leftItem(String text, bool isSelcted, bool isUnread, int index) {
return GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () async {
logic.currentIndex = index;
if (index >= 0) {
logic.hasNewList[index] = false;
logic.update();
Future.delayed(Duration(seconds: 1), () {
logic.loadCalloutsNew();
});
} else {
logic.update();
}
},
onLongPress: () {
if (index >= 0) {
int count = 0;
for(int i = 0; i < logic.mycircle.lists.length; i++) {
if (logic.mycircle.lists[i].is_top) {
count++;
}
if (count == 5 || i > 5) {
break;
}
}
if (count == 5 && !logic.mycircle.lists[index].is_top) {
showOKToast('最多置顶5个可长按已置顶圈子取消置顶哦');
} else {
_showSetTopCircleDialog(Get.context!,logic,logic.mycircle.lists[index]);
}
}
},
child: Container(
width: 65.sp,
height: 65.sp,
color: isSelcted ? Colors.white.withOpacity(0.3) : Colors.transparent,
child: Stack(
alignment: Alignment.center,
children: [
if (text.isEmpty)
topCicleStatusItem(
isSelcted,
Image.asset(
getCircleImage('circile_all_icon'),
width: 55.sp,
)),
if (text.isNotEmpty)
cicleStatusItem(
isSelcted,
Container(
// margin: EdgeInsets.all(6.sp),
// padding: EdgeInsets.only(left: 4.sp),
alignment: Alignment.center,
// padding: EdgeInsets.all(6.sp),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(7.sp),
gradient: LinearGradient(
colors: [Color(0xFF3F6967), Color(0xFF5C3769)])),
child: Text(
text,
maxLines: 2,
style: TextStyle(
color: Colors.white,
fontSize: 13.sp,
overflow: TextOverflow.ellipsis,
fontWeight: FontWeight.w600),
textAlign: TextAlign.center,
),
)),
if (isUnread)
Positioned(
right: 6.sp,
top: 6.sp,
child: Container(
width: 15.sp,
height: 15.sp,
decoration: BoxDecoration(
shape: BoxShape.circle,
gradient: LinearGradient(
colors: [Color(0xFFC343F9), Color(0xFFFB34B2)]),
border:
Border.all(color: Color(0xFF170730), width: 1.sp)),
))
],
),
),
);
}
cicleStatusItem(bool isSelected, Widget widget) {
return Container(
width: 48.sp,
height: 48.sp,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(7.0),
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: isSelected
? [
Color(0xFF71F3F2),
Color(0xFFF558FF),
]
: [
Colors.transparent,
Colors.transparent,
],
stops: [0.0365, 0.9427],
),
),
child: ClipRRect(
borderRadius: BorderRadius.circular(7.0),
child: Container(
padding: EdgeInsets.all(isSelected ? 1.sp : 0.sp),
color: Color(0x14022AFF),
child: widget,
)),
);
}
topCicleStatusItem(bool isSelected, Widget widget) {
return Container(
alignment: Alignment.center,
width: 48.sp,
height: 48.sp,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(7.0),
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: isSelected
? [
Color(0xFF71F3F2),
Color(0xFFF558FF),
]
: [
Colors.transparent,
Colors.transparent,
],
stops: [0.0365, 0.9427],
),
),
child: Container(
width: 47.sp,
height: 47.sp,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(7.sp),
gradient: LinearGradient(
colors: [Color(0xFF3F6967), Color(0xFF5C3769)])),
// padding: EdgeInsets.all(isSelected ? 1.sp : 0),
child: ClipRRect(
borderRadius: BorderRadius.circular(7.0),
child: Container(
margin: EdgeInsets.all(isSelected ? 1.sp : 0.sp),
color: Color(0x14022AFF),
child: widget,
))),
);
}
void _showTextContentDialog(BuildContext context, String msg, String title) {
showDialog(
context: context,
builder: (BuildContext context) {
return Dialog(
backgroundColor: Colors.transparent,
child: Container(
height: 300.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,
),
),
),
Positioned(
top: 15,
left: 0,
right: 0,
child: Center(
child: Text(title,
style: TextStyle(
color: const Color(0xFFF7FAFA), fontSize: 16.sp)),
)),
Container(
margin: EdgeInsets.only(top: 24.sp, bottom: 24.sp),
child: Container(
margin:
EdgeInsets.only(top: 12.sp, left: 14.sp, right: 14.sp),
alignment: Alignment.center,
child: SingleChildScrollView(
child: Text(
msg,
textAlign: TextAlign.center,
style: TextStyle(
color: const Color(0xCCF7FAFA), fontSize: 16.sp),
),
),
),
),
Positioned(
top: 8.sp,
right: 10.sp,
child: GestureDetector(
onTap: () {
Get.back();
},
child: Icon(
Icons.close,
color: Colors.white,
size: 20.sp,
),
)),
],
),
),
);
},
);
}
void _showSetTopCircleDialog(BuildContext context, var controller, var bean) {
showDialog(
context: context,
builder: (BuildContext context) {
return Dialog(
backgroundColor: Colors.transparent,
child: Container(
height: 160.sp,
padding: EdgeInsets.all(1.0),
child: Stack(
children: [
Container(
decoration: BoxDecoration(
shape: BoxShape.rectangle,
borderRadius: BorderRadius.circular(10.0),
gradient: 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: 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(
bean.is_top ? "是否取消置顶该圈子。" : "是否置顶该圈子。",
textAlign: TextAlign.center,
style: TextStyle(
color: 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: 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: Text(
"",
style: TextStyle(
color: Colors.white,
fontSize: 12,
),
),
),
),
SizedBox(width: 24.sp),
GestureDetector(
onTap: () {
Navigator.pop(context);
logic.setTopCircle(bean.id.toString(), !bean.is_top);
},
child: Container(
margin: EdgeInsets.only(top: 24.sp),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(17),
gradient: 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: Text(
"",
style: TextStyle(
color: Colors.white,
fontSize: 12,
),
),
),
)
],
)
],
),
)
],
),
),
);
},
);
}
}