2023-06-14 16:24:05 +08:00
|
|
|
|
import 'package:circle_app/router/app_routers.dart';
|
2023-06-14 15:07:13 +08:00
|
|
|
|
import 'package:circle_app/util/util.dart';
|
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
|
|
|
|
import 'package:flutter_swiper/flutter_swiper.dart';
|
|
|
|
|
|
import 'package:get/get.dart';
|
|
|
|
|
|
|
|
|
|
|
|
import 'logic.dart';
|
|
|
|
|
|
|
|
|
|
|
|
class CirclePage extends StatelessWidget {
|
|
|
|
|
|
CirclePage({Key? key}) : super(key: key);
|
|
|
|
|
|
|
|
|
|
|
|
final logic = Get.put(CircleLogic());
|
|
|
|
|
|
final state = Get.find<CircleLogic>().state;
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
|
|
return Container(
|
|
|
|
|
|
width: MediaQuery.of(context).size.width,
|
|
|
|
|
|
height: MediaQuery.of(context).size.height,
|
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
|
image: DecorationImage(
|
|
|
|
|
|
fit: BoxFit.fill,
|
|
|
|
|
|
image: AssetImage(getBaseImage('home_back')))),
|
|
|
|
|
|
// child: Image.asset(
|
|
|
|
|
|
// getBaseImage('bg'),
|
|
|
|
|
|
// fit: BoxFit.fill,
|
|
|
|
|
|
// ),
|
|
|
|
|
|
child: Scaffold(
|
|
|
|
|
|
backgroundColor: Colors.transparent,
|
|
|
|
|
|
body: SafeArea(
|
|
|
|
|
|
child: GetBuilder(builder: (CircleLogic controller) {
|
|
|
|
|
|
return Container(
|
|
|
|
|
|
child: Column(children: [
|
|
|
|
|
|
navigatorItem(),
|
|
|
|
|
|
Text(controller.state.msg),
|
|
|
|
|
|
//组件使用
|
|
|
|
|
|
Expanded(
|
|
|
|
|
|
child: Swiper(
|
|
|
|
|
|
itemBuilder: (BuildContext context, int index) {
|
|
|
|
|
|
return _getPageByIndex(index);
|
|
|
|
|
|
},
|
|
|
|
|
|
onIndexChanged: (index) {
|
|
|
|
|
|
controller.state.index = index;
|
|
|
|
|
|
controller.update();
|
|
|
|
|
|
},
|
|
|
|
|
|
index: controller.state.index,
|
|
|
|
|
|
itemCount: 3,
|
|
|
|
|
|
viewportFraction: 0.95,
|
|
|
|
|
|
// scale: 0.9,
|
|
|
|
|
|
loop: false,
|
|
|
|
|
|
// pagination: new SwiperPagination(),//如果不填则不显示指示点
|
|
|
|
|
|
// control: new SwiperControl(),//如果不填则不显示左右按钮
|
|
|
|
|
|
))
|
|
|
|
|
|
]),
|
|
|
|
|
|
);
|
|
|
|
|
|
}),
|
|
|
|
|
|
),
|
|
|
|
|
|
));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
navigatorItem() {
|
|
|
|
|
|
List<String> urlList = [
|
|
|
|
|
|
'https://p3-passport.byteimg.com/img/user-avatar/eb429d4dbb3c246f580a6f7894f2b246~100x100.awebp',
|
|
|
|
|
|
'https://p3-passport.byteimg.com/img/user-avatar/eb429d4dbb3c246f580a6f7894f2b246~100x100.awebp',
|
|
|
|
|
|
'https://p3-passport.byteimg.com/img/user-avatar/eb429d4dbb3c246f580a6f7894f2b246~100x100.awebp'
|
|
|
|
|
|
];
|
|
|
|
|
|
List<Widget> widgets = [];
|
|
|
|
|
|
int index = 0;
|
|
|
|
|
|
urlList.forEach((element) {
|
|
|
|
|
|
widgets.add(Positioned(
|
|
|
|
|
|
left: 15.sp * index,
|
|
|
|
|
|
child: circleWidget(element),
|
|
|
|
|
|
));
|
|
|
|
|
|
index++;
|
|
|
|
|
|
});
|
|
|
|
|
|
return Container(
|
|
|
|
|
|
width: Get.width,
|
|
|
|
|
|
padding: EdgeInsets.only(left: 18.sp, right: 18.sp),
|
|
|
|
|
|
height: 44.sp,
|
|
|
|
|
|
child: Stack(
|
|
|
|
|
|
alignment: Alignment.center,
|
|
|
|
|
|
children: [
|
|
|
|
|
|
Positioned(
|
|
|
|
|
|
left: 0,
|
|
|
|
|
|
child: Container(
|
|
|
|
|
|
width: 30.sp * widgets.length,
|
|
|
|
|
|
height: 44.sp,
|
|
|
|
|
|
child: Stack(
|
|
|
|
|
|
children: widgets,
|
|
|
|
|
|
),
|
|
|
|
|
|
)),
|
|
|
|
|
|
ShaderMask(
|
|
|
|
|
|
shaderCallback: (Rect bounds) {
|
|
|
|
|
|
return const LinearGradient(
|
|
|
|
|
|
begin: Alignment(0.0, -1.0),
|
|
|
|
|
|
end: Alignment.bottomCenter,
|
|
|
|
|
|
colors: [Color(0xff71F3F2), Color(0xffF657FF)],
|
|
|
|
|
|
).createShader(Offset.zero & bounds.size);
|
|
|
|
|
|
},
|
|
|
|
|
|
child: Text(
|
|
|
|
|
|
'发现',
|
|
|
|
|
|
style: TextStyle(
|
|
|
|
|
|
fontSize: 18.sp,
|
|
|
|
|
|
fontWeight: FontWeight.w600,
|
|
|
|
|
|
color: Colors.white,
|
|
|
|
|
|
shadows: [
|
|
|
|
|
|
Shadow(color: Color(0xffF657FF), offset: Offset(0.0, -1))
|
|
|
|
|
|
]),
|
|
|
|
|
|
),
|
|
|
|
|
|
),
|
|
|
|
|
|
Positioned(
|
|
|
|
|
|
right: 0,
|
|
|
|
|
|
child: GestureDetector(
|
|
|
|
|
|
child: Image.asset(
|
|
|
|
|
|
getCircleImage('my_circle'),
|
|
|
|
|
|
width: 64.sp,
|
|
|
|
|
|
),
|
|
|
|
|
|
)),
|
|
|
|
|
|
],
|
|
|
|
|
|
),
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
circleWidget(String url, {double width = 30}) {
|
|
|
|
|
|
return GestureDetector(
|
|
|
|
|
|
child: Stack(
|
|
|
|
|
|
alignment: Alignment.center,
|
|
|
|
|
|
children: [
|
|
|
|
|
|
Image.asset(
|
|
|
|
|
|
getCircleImage('avatar_bg'),
|
|
|
|
|
|
width: width.sp,
|
|
|
|
|
|
),
|
|
|
|
|
|
ClipOval(
|
|
|
|
|
|
child: Image.network(
|
|
|
|
|
|
url,
|
|
|
|
|
|
width: (width - 1).sp,
|
|
|
|
|
|
height: (width - 1).sp,
|
|
|
|
|
|
fit: BoxFit.fill,
|
|
|
|
|
|
),
|
|
|
|
|
|
)
|
|
|
|
|
|
],
|
|
|
|
|
|
));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
_getPageByIndex(int index) {
|
|
|
|
|
|
TextSpan span = TextSpan(
|
|
|
|
|
|
text: '查看更多',
|
|
|
|
|
|
style: TextStyle(color: Color(0xFFFF4DF6), fontSize: 14.sp),
|
|
|
|
|
|
);
|
|
|
|
|
|
TextSpan descSpan = TextSpan(
|
|
|
|
|
|
text: '圈子介绍圈子介绍圈子介绍圈子介绍圈子介绍圈子介绍圈子介绍圈子介绍圈子介绍圈子介绍圈子介绍圈',
|
|
|
|
|
|
style: TextStyle(color: Colors.white, fontSize: 12.sp),
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
List<String> urlList = [
|
|
|
|
|
|
'https://p3-passport.byteimg.com/img/user-avatar/eb429d4dbb3c246f580a6f7894f2b246~100x100.awebp',
|
|
|
|
|
|
'https://p3-passport.byteimg.com/img/user-avatar/eb429d4dbb3c246f580a6f7894f2b246~100x100.awebp',
|
|
|
|
|
|
'https://p3-passport.byteimg.com/img/user-avatar/eb429d4dbb3c246f580a6f7894f2b246~100x100.awebp'
|
|
|
|
|
|
];
|
|
|
|
|
|
List<Widget> widgets = [];
|
|
|
|
|
|
int index = 0;
|
|
|
|
|
|
urlList.forEach((element) {
|
|
|
|
|
|
widgets.add(Positioned(
|
|
|
|
|
|
left: 15.sp * index,
|
|
|
|
|
|
child: circleWidget(element),
|
|
|
|
|
|
));
|
|
|
|
|
|
index++;
|
|
|
|
|
|
});
|
|
|
|
|
|
return ClipRRect(
|
|
|
|
|
|
borderRadius: BorderRadius.circular(10.sp),
|
|
|
|
|
|
child: Container(
|
|
|
|
|
|
width: Get.width,
|
|
|
|
|
|
margin: EdgeInsets.only(left: index > 0 ? 4.sp : 0, right: 4.sp),
|
|
|
|
|
|
child: Stack(
|
|
|
|
|
|
children: [
|
|
|
|
|
|
ClipRRect(
|
|
|
|
|
|
borderRadius: BorderRadius.circular(10.sp),
|
|
|
|
|
|
child: SizedBox(
|
|
|
|
|
|
width: Get.width,
|
|
|
|
|
|
child: Image.asset(
|
|
|
|
|
|
getCircleImage('circle_bg'),
|
|
|
|
|
|
fit: BoxFit.fill,
|
|
|
|
|
|
),
|
|
|
|
|
|
)),
|
|
|
|
|
|
Container(
|
|
|
|
|
|
height: Get.height,
|
|
|
|
|
|
width: Get.width,
|
|
|
|
|
|
margin: EdgeInsets.only(top: 72.sp),
|
|
|
|
|
|
child: ListView.builder(
|
|
|
|
|
|
itemCount: 3,
|
2023-06-14 16:24:05 +08:00
|
|
|
|
itemBuilder: (context, index) {
|
2023-06-14 15:07:13 +08:00
|
|
|
|
if (index == 0) {
|
|
|
|
|
|
return Container(
|
|
|
|
|
|
padding: EdgeInsets.only(left: 12.sp, right: 12.sp),
|
|
|
|
|
|
height: 72.sp,
|
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
|
image: DecorationImage(
|
|
|
|
|
|
fit: BoxFit.fill,
|
2023-06-14 16:24:05 +08:00
|
|
|
|
image: AssetImage(
|
|
|
|
|
|
getCircleImage('circle_desc')))),
|
2023-06-14 15:07:13 +08:00
|
|
|
|
child: Column(
|
|
|
|
|
|
children: [
|
|
|
|
|
|
Container(
|
|
|
|
|
|
width: Get.width,
|
|
|
|
|
|
child: RichText(
|
|
|
|
|
|
overflow: TextOverflow.fade,
|
|
|
|
|
|
maxLines: 2,
|
2023-06-14 16:24:05 +08:00
|
|
|
|
text: TextSpan(children: <InlineSpan>[
|
|
|
|
|
|
descSpan,
|
|
|
|
|
|
span
|
|
|
|
|
|
])),
|
2023-06-14 15:07:13 +08:00
|
|
|
|
),
|
|
|
|
|
|
Container(
|
|
|
|
|
|
child: Row(
|
|
|
|
|
|
children: [
|
|
|
|
|
|
Row(
|
|
|
|
|
|
children: [
|
|
|
|
|
|
Container(
|
|
|
|
|
|
height: 30.sp,
|
2023-06-14 16:24:05 +08:00
|
|
|
|
width: 30.0 +
|
|
|
|
|
|
15 * (widgets.length - 1),
|
2023-06-14 15:07:13 +08:00
|
|
|
|
child: Stack(
|
|
|
|
|
|
children: widgets,
|
|
|
|
|
|
),
|
|
|
|
|
|
),
|
|
|
|
|
|
SizedBox(
|
|
|
|
|
|
width: 8.sp,
|
|
|
|
|
|
),
|
|
|
|
|
|
Text(
|
|
|
|
|
|
'3.5万圈友',
|
|
|
|
|
|
style: TextStyle(
|
2023-06-14 16:24:05 +08:00
|
|
|
|
color: Colors.white,
|
|
|
|
|
|
fontSize: 12.sp),
|
2023-06-14 15:07:13 +08:00
|
|
|
|
),
|
|
|
|
|
|
SizedBox(
|
|
|
|
|
|
width: 8.sp,
|
|
|
|
|
|
),
|
|
|
|
|
|
Image.asset(
|
|
|
|
|
|
getCircleImage('play'),
|
|
|
|
|
|
width: 20.sp,
|
|
|
|
|
|
)
|
|
|
|
|
|
],
|
|
|
|
|
|
)
|
|
|
|
|
|
],
|
|
|
|
|
|
),
|
|
|
|
|
|
),
|
|
|
|
|
|
],
|
|
|
|
|
|
),
|
|
|
|
|
|
);
|
|
|
|
|
|
} else if (index == 1) {
|
|
|
|
|
|
return vipDynamicItem();
|
|
|
|
|
|
} else {
|
|
|
|
|
|
return normalDynamicItem();
|
|
|
|
|
|
}
|
|
|
|
|
|
}),
|
|
|
|
|
|
),
|
|
|
|
|
|
ClipRRect(
|
2023-06-14 16:24:05 +08:00
|
|
|
|
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: [
|
|
|
|
|
|
Image.network(
|
|
|
|
|
|
'https://p3-passport.byteimg.com/img/user-avatar/eb429d4dbb3c246f580a6f7894f2b246~100x100.awebp',
|
|
|
|
|
|
width: 42.sp,
|
|
|
|
|
|
height: 42.sp,
|
|
|
|
|
|
fit: BoxFit.fill,
|
|
|
|
|
|
),
|
|
|
|
|
|
Expanded(
|
|
|
|
|
|
child: Container(
|
|
|
|
|
|
padding: EdgeInsets.only(left: 8.sp, top: 12.sp),
|
|
|
|
|
|
alignment: Alignment.centerLeft,
|
|
|
|
|
|
height: 72.sp,
|
|
|
|
|
|
child: Column(
|
|
|
|
|
|
children: [
|
|
|
|
|
|
Text(
|
|
|
|
|
|
'圈子名称',
|
|
|
|
|
|
style: TextStyle(
|
|
|
|
|
|
color: Colors.white,
|
|
|
|
|
|
fontSize: 18.sp,
|
|
|
|
|
|
fontWeight: FontWeight.w600),
|
|
|
|
|
|
),
|
|
|
|
|
|
SizedBox(
|
|
|
|
|
|
height: 4.sp,
|
|
|
|
|
|
),
|
|
|
|
|
|
Text(
|
|
|
|
|
|
'35.6万人看过',
|
|
|
|
|
|
style: TextStyle(
|
|
|
|
|
|
color: Color(0xff03FEFB),
|
|
|
|
|
|
fontSize: 12.sp,
|
|
|
|
|
|
),
|
|
|
|
|
|
),
|
|
|
|
|
|
],
|
2023-06-14 15:07:13 +08:00
|
|
|
|
),
|
2023-06-14 16:24:05 +08:00
|
|
|
|
)),
|
|
|
|
|
|
GestureDetector(
|
|
|
|
|
|
onTap: () {
|
|
|
|
|
|
Get.bottomSheet(tipWdiget(),
|
|
|
|
|
|
isScrollControlled: true, enableDrag: false);
|
|
|
|
|
|
},
|
|
|
|
|
|
child: Image.asset(
|
|
|
|
|
|
getCircleImage('add'),
|
|
|
|
|
|
width: 77.sp,
|
2023-06-14 15:07:13 +08:00
|
|
|
|
),
|
2023-06-14 16:24:05 +08:00
|
|
|
|
)
|
|
|
|
|
|
],
|
|
|
|
|
|
),
|
|
|
|
|
|
)),
|
2023-06-14 15:07:13 +08:00
|
|
|
|
Positioned(
|
2023-06-14 16:24:05 +08:00
|
|
|
|
bottom: 56.sp,
|
2023-06-14 15:07:13 +08:00
|
|
|
|
right: 0.sp,
|
2023-06-14 16:24:05 +08:00
|
|
|
|
child: GestureDetector(
|
|
|
|
|
|
onTap: () {
|
|
|
|
|
|
Get.toNamed(AppRoutes.Call_out);
|
|
|
|
|
|
},
|
|
|
|
|
|
child: Image.asset(
|
|
|
|
|
|
getCircleImage('send_msg'),
|
|
|
|
|
|
width: 60.sp,
|
|
|
|
|
|
)))
|
2023-06-14 15:07:13 +08:00
|
|
|
|
],
|
|
|
|
|
|
)));
|
|
|
|
|
|
}
|
2023-06-14 16:24:05 +08:00
|
|
|
|
|
2023-06-14 15:07:13 +08:00
|
|
|
|
///至尊喊话
|
|
|
|
|
|
vipDynamicItem() {
|
|
|
|
|
|
Text descText = Text(
|
|
|
|
|
|
'圈子介绍圈子介绍圈子介绍圈子介绍圈子介绍圈子介绍圈子介圈子介绍圈子介绍圈',
|
|
|
|
|
|
style: TextStyle(color: Colors.white, fontSize: 14.sp),
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
List<String> urlList = [
|
|
|
|
|
|
'https://p3-passport.byteimg.com/img/user-avatar/eb429d4dbb3c246f580a6f7894f2b246~100x100.awebp',
|
|
|
|
|
|
'https://p3-passport.byteimg.com/img/user-avatar/eb429d4dbb3c246f580a6f7894f2b246~100x100.awebp',
|
|
|
|
|
|
'https://p3-passport.byteimg.com/img/user-avatar/eb429d4dbb3c246f580a6f7894f2b246~100x100.awebp'
|
|
|
|
|
|
];
|
|
|
|
|
|
List<Widget> widgets = [];
|
|
|
|
|
|
int index = 0;
|
|
|
|
|
|
urlList.forEach((element) {
|
|
|
|
|
|
widgets.add(Positioned(
|
|
|
|
|
|
left: 12.sp * index,
|
|
|
|
|
|
child: circleWidget(element, width: 24),
|
|
|
|
|
|
));
|
|
|
|
|
|
index++;
|
|
|
|
|
|
});
|
|
|
|
|
|
widgets.add(Positioned(
|
|
|
|
|
|
left: 12.sp * urlList.length,
|
|
|
|
|
|
child: Image.asset(
|
|
|
|
|
|
getCircleImage('more'),
|
|
|
|
|
|
width: 24.sp,
|
|
|
|
|
|
)));
|
|
|
|
|
|
return Container(
|
|
|
|
|
|
margin: EdgeInsets.only(top: 10.sp),
|
|
|
|
|
|
width: Get.width,
|
|
|
|
|
|
height: 279.sp,
|
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
|
image: DecorationImage(
|
|
|
|
|
|
fit: BoxFit.fill,
|
|
|
|
|
|
image: AssetImage(
|
|
|
|
|
|
getCircleImage('pic_bg'),
|
|
|
|
|
|
))),
|
|
|
|
|
|
child: Stack(
|
|
|
|
|
|
children: [
|
|
|
|
|
|
Positioned(
|
|
|
|
|
|
left: 0,
|
|
|
|
|
|
top: 2.sp,
|
|
|
|
|
|
child: Image.asset(getCircleImage('vip_say')),
|
|
|
|
|
|
height: 18.sp,
|
|
|
|
|
|
),
|
|
|
|
|
|
Positioned(
|
|
|
|
|
|
right: 2.sp,
|
|
|
|
|
|
top: 2.sp,
|
|
|
|
|
|
child: Image.asset(getCircleImage('location')),
|
|
|
|
|
|
height: 18.sp,
|
|
|
|
|
|
),
|
|
|
|
|
|
Container(
|
|
|
|
|
|
height: 279.sp,
|
|
|
|
|
|
width: Get.width,
|
|
|
|
|
|
padding: EdgeInsets.only(top: 12.sp, left: 12.sp, right: 12.sp),
|
|
|
|
|
|
child: Column(
|
|
|
|
|
|
children: [
|
|
|
|
|
|
Container(
|
|
|
|
|
|
height: 72.sp,
|
|
|
|
|
|
child: Row(
|
|
|
|
|
|
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
|
|
|
|
children: [
|
|
|
|
|
|
GestureDetector(
|
|
|
|
|
|
child: Stack(
|
|
|
|
|
|
alignment: Alignment.center,
|
|
|
|
|
|
children: [
|
|
|
|
|
|
Image.asset(
|
|
|
|
|
|
getCircleImage('avatar_bg'),
|
|
|
|
|
|
width: 42.sp,
|
|
|
|
|
|
),
|
|
|
|
|
|
ClipOval(
|
|
|
|
|
|
child: Image.network(
|
|
|
|
|
|
'https://p3-passport.byteimg.com/img/user-avatar/eb429d4dbb3c246f580a6f7894f2b246~100x100.awebp',
|
|
|
|
|
|
width: 40.sp,
|
|
|
|
|
|
height: 40.sp,
|
|
|
|
|
|
fit: BoxFit.fill,
|
|
|
|
|
|
),
|
|
|
|
|
|
)
|
|
|
|
|
|
],
|
|
|
|
|
|
)),
|
|
|
|
|
|
Expanded(
|
|
|
|
|
|
child: Container(
|
|
|
|
|
|
padding: EdgeInsets.only(left: 8.sp, top: 12.sp),
|
|
|
|
|
|
alignment: Alignment.centerLeft,
|
|
|
|
|
|
height: 72.sp,
|
|
|
|
|
|
child: Column(
|
|
|
|
|
|
children: [
|
|
|
|
|
|
Row(
|
|
|
|
|
|
children: [
|
|
|
|
|
|
Text(
|
|
|
|
|
|
'圈子名称',
|
|
|
|
|
|
style: TextStyle(
|
|
|
|
|
|
color: Colors.white,
|
|
|
|
|
|
fontSize: 18.sp,
|
|
|
|
|
|
fontWeight: FontWeight.w600),
|
|
|
|
|
|
),
|
|
|
|
|
|
SizedBox(
|
|
|
|
|
|
width: 8.sp,
|
|
|
|
|
|
),
|
|
|
|
|
|
Image.asset(
|
|
|
|
|
|
getCircleImage('vip'),
|
|
|
|
|
|
width: 36.sp,
|
|
|
|
|
|
)
|
|
|
|
|
|
],
|
|
|
|
|
|
),
|
|
|
|
|
|
SizedBox(
|
|
|
|
|
|
height: 4.sp,
|
|
|
|
|
|
),
|
|
|
|
|
|
Row(
|
|
|
|
|
|
children: [
|
|
|
|
|
|
Container(
|
|
|
|
|
|
alignment: Alignment.center,
|
|
|
|
|
|
height: 18.sp,
|
|
|
|
|
|
padding:
|
|
|
|
|
|
EdgeInsets.only(left: 6.sp, right: 6.sp),
|
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
|
borderRadius: BorderRadius.circular(9.sp),
|
2023-06-14 16:24:05 +08:00
|
|
|
|
gradient: const LinearGradient(
|
2023-06-14 15:07:13 +08:00
|
|
|
|
begin: Alignment(0.25, 0.5),
|
|
|
|
|
|
end: Alignment(0.75, 0.5),
|
|
|
|
|
|
colors: [
|
|
|
|
|
|
Color(0xff8DFFF8),
|
|
|
|
|
|
Color(0xffB5D3FF)
|
|
|
|
|
|
])),
|
|
|
|
|
|
child: Text(
|
|
|
|
|
|
'男.33.DOM.异性恋',
|
|
|
|
|
|
style: TextStyle(
|
|
|
|
|
|
color: Colors.black,
|
|
|
|
|
|
fontSize: 12.sp,
|
|
|
|
|
|
),
|
|
|
|
|
|
),
|
|
|
|
|
|
)
|
|
|
|
|
|
],
|
|
|
|
|
|
),
|
|
|
|
|
|
],
|
|
|
|
|
|
),
|
|
|
|
|
|
)),
|
|
|
|
|
|
],
|
|
|
|
|
|
),
|
|
|
|
|
|
),
|
|
|
|
|
|
Container(
|
|
|
|
|
|
// margin: EdgeInsets.only(top: 4.sp),
|
|
|
|
|
|
child: descText,
|
|
|
|
|
|
),
|
|
|
|
|
|
Container(
|
|
|
|
|
|
height: 100.sp,
|
|
|
|
|
|
margin: EdgeInsets.only(top: 5.sp),
|
|
|
|
|
|
child: GridView(
|
2023-06-14 16:24:05 +08:00
|
|
|
|
physics: const NeverScrollableScrollPhysics(),
|
2023-06-14 15:07:13 +08:00
|
|
|
|
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
|
|
|
|
|
|
crossAxisCount: 3, //横轴三个子widget
|
|
|
|
|
|
crossAxisSpacing: 8.sp,
|
|
|
|
|
|
childAspectRatio: 1.0 //宽高比为1时,子widget
|
|
|
|
|
|
),
|
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
|
ClipRRect(
|
|
|
|
|
|
borderRadius: BorderRadius.circular(6.sp),
|
|
|
|
|
|
child: Image.network(
|
|
|
|
|
|
'https://pic1.zhimg.com/v2-3be05963f5f3753a8cb75b6692154d4a_720w.jpg?source=172ae18b',
|
|
|
|
|
|
fit: BoxFit.fill,
|
|
|
|
|
|
),
|
|
|
|
|
|
),
|
|
|
|
|
|
ClipRRect(
|
|
|
|
|
|
borderRadius: BorderRadius.circular(6.sp),
|
|
|
|
|
|
child: Image.network(
|
|
|
|
|
|
'https://pic1.zhimg.com/v2-3be05963f5f3753a8cb75b6692154d4a_720w.jpg?source=172ae18b',
|
|
|
|
|
|
fit: BoxFit.fill),
|
|
|
|
|
|
),
|
|
|
|
|
|
ClipRRect(
|
|
|
|
|
|
borderRadius: BorderRadius.circular(6.sp),
|
|
|
|
|
|
child: Image.network(
|
|
|
|
|
|
'https://pic1.zhimg.com/v2-3be05963f5f3753a8cb75b6692154d4a_720w.jpg?source=172ae18b',
|
|
|
|
|
|
fit: BoxFit.fill),
|
|
|
|
|
|
),
|
|
|
|
|
|
]),
|
|
|
|
|
|
),
|
|
|
|
|
|
Container(
|
|
|
|
|
|
height: 34.sp,
|
2023-06-14 16:24:05 +08:00
|
|
|
|
padding: EdgeInsets.only(left: 5.sp, right: 10.sp),
|
2023-06-14 15:07:13 +08:00
|
|
|
|
margin: EdgeInsets.only(top: 5.sp),
|
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
|
borderRadius: BorderRadius.circular(17.sp),
|
|
|
|
|
|
gradient: const LinearGradient(
|
|
|
|
|
|
begin: Alignment(0.25, 0.5),
|
|
|
|
|
|
end: Alignment(0.75, 0.5),
|
|
|
|
|
|
colors: [Color(0xff261240), Color(0xff122D40)])),
|
|
|
|
|
|
child: Row(
|
|
|
|
|
|
children: [
|
|
|
|
|
|
Container(
|
|
|
|
|
|
width: 24 + 12.sp * widgets.length - 12.sp,
|
|
|
|
|
|
height: 24.sp,
|
|
|
|
|
|
child: Stack(children: widgets),
|
|
|
|
|
|
),
|
2023-06-14 16:24:05 +08:00
|
|
|
|
SizedBox(
|
|
|
|
|
|
width: 4.sp,
|
|
|
|
|
|
),
|
2023-06-14 15:07:13 +08:00
|
|
|
|
Expanded(
|
|
|
|
|
|
child: Text(
|
|
|
|
|
|
'1位圈友已私聊',
|
|
|
|
|
|
style: TextStyle(color: Colors.white, fontSize: 12.sp),
|
|
|
|
|
|
)),
|
|
|
|
|
|
Image.asset(
|
|
|
|
|
|
getCircleImage('chat'),
|
|
|
|
|
|
width: 60.sp,
|
|
|
|
|
|
)
|
|
|
|
|
|
],
|
|
|
|
|
|
),
|
|
|
|
|
|
)
|
|
|
|
|
|
],
|
|
|
|
|
|
),
|
|
|
|
|
|
)
|
|
|
|
|
|
],
|
|
|
|
|
|
),
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
2023-06-14 16:24:05 +08:00
|
|
|
|
|
2023-06-14 15:07:13 +08:00
|
|
|
|
///普通图文喊话
|
|
|
|
|
|
normalDynamicItem() {
|
|
|
|
|
|
Text descText = Text(
|
|
|
|
|
|
'圈子介绍圈子介绍圈子介绍圈子介绍圈子介绍圈子介绍圈子介圈子介绍圈子介绍圈',
|
|
|
|
|
|
style: TextStyle(color: Colors.white, fontSize: 14.sp),
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
List<String> urlList = [
|
|
|
|
|
|
'https://p3-passport.byteimg.com/img/user-avatar/eb429d4dbb3c246f580a6f7894f2b246~100x100.awebp',
|
|
|
|
|
|
'https://p3-passport.byteimg.com/img/user-avatar/eb429d4dbb3c246f580a6f7894f2b246~100x100.awebp',
|
|
|
|
|
|
'https://p3-passport.byteimg.com/img/user-avatar/eb429d4dbb3c246f580a6f7894f2b246~100x100.awebp'
|
|
|
|
|
|
];
|
|
|
|
|
|
List<Widget> widgets = [];
|
|
|
|
|
|
int index = 0;
|
|
|
|
|
|
urlList.forEach((element) {
|
|
|
|
|
|
widgets.add(Positioned(
|
|
|
|
|
|
left: 12.sp * index,
|
|
|
|
|
|
child: circleWidget(element, width: 24),
|
|
|
|
|
|
));
|
|
|
|
|
|
index++;
|
|
|
|
|
|
});
|
|
|
|
|
|
widgets.add(Positioned(
|
|
|
|
|
|
left: 12.sp * urlList.length,
|
|
|
|
|
|
child: Image.asset(
|
|
|
|
|
|
getCircleImage('more'),
|
|
|
|
|
|
width: 24.sp,
|
|
|
|
|
|
)));
|
|
|
|
|
|
return Container(
|
|
|
|
|
|
margin: EdgeInsets.only(top: 10.sp),
|
|
|
|
|
|
width: Get.width,
|
|
|
|
|
|
height: 279.sp,
|
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
|
image: DecorationImage(
|
|
|
|
|
|
fit: BoxFit.fill,
|
|
|
|
|
|
image: AssetImage(
|
|
|
|
|
|
getCircleImage('normal_bg'),
|
|
|
|
|
|
))),
|
|
|
|
|
|
child: Stack(
|
|
|
|
|
|
children: [
|
|
|
|
|
|
Positioned(
|
|
|
|
|
|
right: 2.sp,
|
|
|
|
|
|
top: 2.sp,
|
|
|
|
|
|
child: Image.asset(getCircleImage('location')),
|
|
|
|
|
|
height: 18.sp,
|
|
|
|
|
|
),
|
|
|
|
|
|
Container(
|
|
|
|
|
|
height: 279.sp,
|
|
|
|
|
|
width: Get.width,
|
2023-06-14 16:24:05 +08:00
|
|
|
|
padding: EdgeInsets.only(left: 12.sp, right: 12.sp),
|
2023-06-14 15:07:13 +08:00
|
|
|
|
child: Column(
|
|
|
|
|
|
children: [
|
|
|
|
|
|
Container(
|
|
|
|
|
|
height: 72.sp,
|
|
|
|
|
|
child: Row(
|
|
|
|
|
|
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
|
|
|
|
children: [
|
|
|
|
|
|
GestureDetector(
|
|
|
|
|
|
child: Stack(
|
2023-06-14 16:24:05 +08:00
|
|
|
|
alignment: Alignment.center,
|
|
|
|
|
|
children: [
|
|
|
|
|
|
Image.asset(
|
|
|
|
|
|
getCircleImage('avatar_bg'),
|
|
|
|
|
|
width: 42.sp,
|
|
|
|
|
|
),
|
|
|
|
|
|
ClipOval(
|
|
|
|
|
|
child: Image.network(
|
|
|
|
|
|
'https://p3-passport.byteimg.com/img/user-avatar/eb429d4dbb3c246f580a6f7894f2b246~100x100.awebp',
|
|
|
|
|
|
width: 40.sp,
|
|
|
|
|
|
height: 40.sp,
|
|
|
|
|
|
fit: BoxFit.fill,
|
|
|
|
|
|
),
|
|
|
|
|
|
)
|
|
|
|
|
|
],
|
|
|
|
|
|
)),
|
2023-06-14 15:07:13 +08:00
|
|
|
|
Expanded(
|
|
|
|
|
|
child: Container(
|
2023-06-14 16:24:05 +08:00
|
|
|
|
padding: EdgeInsets.only(left: 8.sp, top: 12.sp),
|
|
|
|
|
|
alignment: Alignment.centerLeft,
|
|
|
|
|
|
height: 72.sp,
|
|
|
|
|
|
child: Column(
|
|
|
|
|
|
children: [
|
|
|
|
|
|
Row(
|
2023-06-14 15:07:13 +08:00
|
|
|
|
children: [
|
2023-06-14 16:24:05 +08:00
|
|
|
|
Text(
|
|
|
|
|
|
'圈子名称',
|
|
|
|
|
|
style: TextStyle(
|
|
|
|
|
|
color: Colors.white,
|
|
|
|
|
|
fontSize: 18.sp,
|
|
|
|
|
|
fontWeight: FontWeight.w600),
|
2023-06-14 15:07:13 +08:00
|
|
|
|
),
|
|
|
|
|
|
SizedBox(
|
2023-06-14 16:24:05 +08:00
|
|
|
|
width: 8.sp,
|
2023-06-14 15:07:13 +08:00
|
|
|
|
),
|
2023-06-14 16:24:05 +08:00
|
|
|
|
Image.asset(
|
|
|
|
|
|
getCircleImage('vip'),
|
|
|
|
|
|
width: 36.sp,
|
|
|
|
|
|
)
|
|
|
|
|
|
],
|
|
|
|
|
|
),
|
|
|
|
|
|
SizedBox(
|
|
|
|
|
|
height: 4.sp,
|
|
|
|
|
|
),
|
|
|
|
|
|
Row(
|
|
|
|
|
|
children: [
|
|
|
|
|
|
Container(
|
|
|
|
|
|
alignment: Alignment.center,
|
|
|
|
|
|
height: 18.sp,
|
|
|
|
|
|
padding:
|
2023-06-14 15:07:13 +08:00
|
|
|
|
EdgeInsets.only(left: 6.sp, right: 6.sp),
|
2023-06-14 16:24:05 +08:00
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
|
borderRadius: BorderRadius.circular(9.sp),
|
|
|
|
|
|
gradient: LinearGradient(
|
|
|
|
|
|
begin: Alignment(0.25, 0.5),
|
|
|
|
|
|
end: Alignment(0.75, 0.5),
|
|
|
|
|
|
colors: [
|
|
|
|
|
|
Color(0xff8DFFF8),
|
|
|
|
|
|
Color(0xffB5D3FF)
|
|
|
|
|
|
])),
|
|
|
|
|
|
child: Text(
|
|
|
|
|
|
'男.33.DOM.异性恋',
|
|
|
|
|
|
style: TextStyle(
|
|
|
|
|
|
color: Colors.black,
|
|
|
|
|
|
fontSize: 12.sp,
|
|
|
|
|
|
),
|
|
|
|
|
|
),
|
|
|
|
|
|
)
|
2023-06-14 15:07:13 +08:00
|
|
|
|
],
|
|
|
|
|
|
),
|
2023-06-14 16:24:05 +08:00
|
|
|
|
],
|
|
|
|
|
|
),
|
|
|
|
|
|
)),
|
2023-06-14 15:07:13 +08:00
|
|
|
|
],
|
|
|
|
|
|
),
|
|
|
|
|
|
),
|
|
|
|
|
|
Container(
|
|
|
|
|
|
// margin: EdgeInsets.only(top: 4.sp),
|
|
|
|
|
|
child: descText,
|
|
|
|
|
|
),
|
|
|
|
|
|
Container(
|
|
|
|
|
|
height: 100.sp,
|
|
|
|
|
|
margin: EdgeInsets.only(top: 5.sp),
|
|
|
|
|
|
child: GridView(
|
|
|
|
|
|
physics: const NeverScrollableScrollPhysics(),
|
|
|
|
|
|
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
|
|
|
|
|
|
crossAxisCount: 3, //横轴三个子widget
|
|
|
|
|
|
crossAxisSpacing: 8.sp,
|
|
|
|
|
|
childAspectRatio: 1.0 //宽高比为1时,子widget
|
2023-06-14 16:24:05 +08:00
|
|
|
|
),
|
2023-06-14 15:07:13 +08:00
|
|
|
|
children: <Widget>[
|
|
|
|
|
|
ClipRRect(
|
|
|
|
|
|
borderRadius: BorderRadius.circular(6.sp),
|
|
|
|
|
|
child: Image.network(
|
|
|
|
|
|
'https://pic1.zhimg.com/v2-3be05963f5f3753a8cb75b6692154d4a_720w.jpg?source=172ae18b',
|
|
|
|
|
|
fit: BoxFit.fill,
|
|
|
|
|
|
),
|
|
|
|
|
|
),
|
|
|
|
|
|
ClipRRect(
|
|
|
|
|
|
borderRadius: BorderRadius.circular(6.sp),
|
|
|
|
|
|
child: Image.network(
|
|
|
|
|
|
'https://pic1.zhimg.com/v2-3be05963f5f3753a8cb75b6692154d4a_720w.jpg?source=172ae18b',
|
|
|
|
|
|
fit: BoxFit.fill),
|
|
|
|
|
|
),
|
|
|
|
|
|
ClipRRect(
|
|
|
|
|
|
borderRadius: BorderRadius.circular(6.sp),
|
|
|
|
|
|
child: Image.network(
|
|
|
|
|
|
'https://pic1.zhimg.com/v2-3be05963f5f3753a8cb75b6692154d4a_720w.jpg?source=172ae18b',
|
|
|
|
|
|
fit: BoxFit.fill),
|
|
|
|
|
|
),
|
|
|
|
|
|
]),
|
|
|
|
|
|
),
|
|
|
|
|
|
Container(
|
|
|
|
|
|
height: 34.sp,
|
2023-06-14 16:24:05 +08:00
|
|
|
|
padding: EdgeInsets.only(left: 5.sp, right: 10.sp),
|
2023-06-14 15:07:13 +08:00
|
|
|
|
margin: EdgeInsets.only(top: 5.sp),
|
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
|
borderRadius: BorderRadius.circular(17.sp),
|
|
|
|
|
|
gradient: const LinearGradient(
|
|
|
|
|
|
begin: Alignment(0.25, 0.5),
|
|
|
|
|
|
end: Alignment(0.75, 0.5),
|
|
|
|
|
|
colors: [Color(0xff261240), Color(0xff122D40)])),
|
|
|
|
|
|
child: Row(
|
|
|
|
|
|
children: [
|
|
|
|
|
|
Container(
|
|
|
|
|
|
width: 24 + 12.sp * widgets.length - 12.sp,
|
|
|
|
|
|
height: 24.sp,
|
|
|
|
|
|
child: Stack(children: widgets),
|
|
|
|
|
|
),
|
2023-06-14 16:24:05 +08:00
|
|
|
|
SizedBox(
|
|
|
|
|
|
width: 4.sp,
|
|
|
|
|
|
),
|
2023-06-14 15:07:13 +08:00
|
|
|
|
Expanded(
|
|
|
|
|
|
child: Text(
|
2023-06-14 16:24:05 +08:00
|
|
|
|
'1位圈友已私聊',
|
|
|
|
|
|
style: TextStyle(color: Colors.white, fontSize: 12.sp),
|
|
|
|
|
|
)),
|
2023-06-14 15:07:13 +08:00
|
|
|
|
Image.asset(
|
|
|
|
|
|
getCircleImage('chat'),
|
|
|
|
|
|
width: 60.sp,
|
|
|
|
|
|
)
|
|
|
|
|
|
],
|
|
|
|
|
|
),
|
|
|
|
|
|
)
|
|
|
|
|
|
],
|
|
|
|
|
|
),
|
|
|
|
|
|
)
|
|
|
|
|
|
],
|
|
|
|
|
|
),
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
tipWdiget() {
|
|
|
|
|
|
return Container(
|
|
|
|
|
|
width: Get.width,
|
|
|
|
|
|
height: Get.height,
|
|
|
|
|
|
child: Center(
|
|
|
|
|
|
child: Container(
|
|
|
|
|
|
width: 339.sp,
|
|
|
|
|
|
height: 330.sp,
|
|
|
|
|
|
decoration: BoxDecoration(
|
2023-06-14 16:24:05 +08:00
|
|
|
|
image: DecorationImage(
|
|
|
|
|
|
fit: BoxFit.fill,
|
|
|
|
|
|
image: AssetImage(getCircleImage('add_tip_bg')))),
|
2023-06-14 15:07:13 +08:00
|
|
|
|
child: Stack(
|
|
|
|
|
|
alignment: Alignment.center,
|
|
|
|
|
|
children: [
|
|
|
|
|
|
Positioned(
|
2023-06-14 16:24:05 +08:00
|
|
|
|
top: 5.sp,
|
|
|
|
|
|
right: 12.sp,
|
2023-06-14 15:07:13 +08:00
|
|
|
|
child: GestureDetector(
|
|
|
|
|
|
onTap: () {
|
|
|
|
|
|
Get.back();
|
|
|
|
|
|
},
|
2023-06-14 16:24:05 +08:00
|
|
|
|
child: Image.asset(
|
|
|
|
|
|
getCircleImage('close'),
|
|
|
|
|
|
width: 24.sp,
|
|
|
|
|
|
),
|
|
|
|
|
|
)),
|
2023-06-14 15:07:13 +08:00
|
|
|
|
Positioned(
|
2023-06-14 16:24:05 +08:00
|
|
|
|
top: 24.sp,
|
|
|
|
|
|
child: Text(
|
|
|
|
|
|
'解锁圈子才能主动私聊',
|
|
|
|
|
|
style: TextStyle(color: Colors.white, fontSize: 16.sp),
|
|
|
|
|
|
)),
|
2023-06-14 15:07:13 +08:00
|
|
|
|
Positioned(
|
2023-06-14 16:24:05 +08:00
|
|
|
|
left: 17.sp,
|
|
|
|
|
|
top: 64.sp,
|
|
|
|
|
|
child: Text(
|
|
|
|
|
|
'为什么要解锁圈子?',
|
|
|
|
|
|
style: TextStyle(color: Colors.white, fontSize: 16.sp),
|
|
|
|
|
|
)),
|
|
|
|
|
|
Positioned(
|
|
|
|
|
|
top: 98.sp,
|
2023-06-14 15:07:13 +08:00
|
|
|
|
child: Container(
|
2023-06-14 16:24:05 +08:00
|
|
|
|
width: 339.sp,
|
|
|
|
|
|
padding: EdgeInsets.only(left: 17.sp, right: 17.sp),
|
|
|
|
|
|
child: Text(
|
|
|
|
|
|
'为打造纯净的社交环境,更好地服务大家,基于以下几方面考虑:1、平台升级为全天24小时人工审核,保证用户真实,避免骗子、酒托、虚假人士等扰乱平台 ;2、杜绝未入圈用户随意骚扰或影响已入圈的跨友;3、谢绝只会白嫖的猎奇人士。',
|
|
|
|
|
|
style: TextStyle(
|
|
|
|
|
|
color: Color.fromRGBO(247, 250, 250, 0.8),
|
|
|
|
|
|
fontSize: 12.sp)),
|
|
|
|
|
|
)),
|
2023-06-14 15:07:13 +08:00
|
|
|
|
Positioned(
|
2023-06-14 16:24:05 +08:00
|
|
|
|
bottom: 18.sp,
|
2023-06-14 15:07:13 +08:00
|
|
|
|
child: Container(
|
2023-06-14 16:24:05 +08:00
|
|
|
|
width: 168.sp,
|
|
|
|
|
|
height: 42.sp,
|
|
|
|
|
|
alignment: Alignment.center,
|
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
|
borderRadius: BorderRadius.circular(21.sp),
|
|
|
|
|
|
gradient: const LinearGradient(
|
|
|
|
|
|
begin: Alignment.centerLeft,
|
|
|
|
|
|
end: Alignment.centerRight,
|
|
|
|
|
|
colors: [Color(0xff0AFCFF), Color(0xffD739EA)])),
|
|
|
|
|
|
child: Text(
|
|
|
|
|
|
'立即解锁',
|
|
|
|
|
|
style: TextStyle(color: Colors.white, fontSize: 16.sp),
|
|
|
|
|
|
),
|
|
|
|
|
|
)),
|
|
|
|
|
|
Positioned(
|
|
|
|
|
|
bottom: 72.sp,
|
|
|
|
|
|
child: Container(
|
|
|
|
|
|
child: Row(
|
|
|
|
|
|
children: [
|
|
|
|
|
|
Text(
|
|
|
|
|
|
'¥18',
|
|
|
|
|
|
style: TextStyle(
|
|
|
|
|
|
color: Color(0xffE845FF),
|
|
|
|
|
|
fontSize: 16.sp,
|
|
|
|
|
|
fontWeight: FontWeight.w600),
|
|
|
|
|
|
),
|
|
|
|
|
|
SizedBox(
|
|
|
|
|
|
width: 2.sp,
|
|
|
|
|
|
),
|
|
|
|
|
|
Text(
|
|
|
|
|
|
'(原价60)',
|
|
|
|
|
|
style: TextStyle(
|
|
|
|
|
|
color: Colors.white70,
|
|
|
|
|
|
fontSize: 16.sp,
|
|
|
|
|
|
fontWeight: FontWeight.w400,
|
|
|
|
|
|
decoration: TextDecoration.lineThrough,
|
|
|
|
|
|
decorationColor: Colors.white70,
|
|
|
|
|
|
),
|
|
|
|
|
|
),
|
|
|
|
|
|
],
|
|
|
|
|
|
),
|
|
|
|
|
|
))
|
2023-06-14 15:07:13 +08:00
|
|
|
|
],
|
|
|
|
|
|
),
|
|
|
|
|
|
),
|
|
|
|
|
|
),
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|