parent
fe8071650c
commit
6c2791f56f
After Width: | Height: | Size: 55 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 667 B |
After Width: | Height: | Size: 1.1 KiB |
@ -0,0 +1,205 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:oktoast/oktoast.dart';
|
||||
import 'package:recook/constants/api.dart';
|
||||
import 'package:recook/constants/api_v2.dart';
|
||||
import 'package:recook/manager/http_manager.dart';
|
||||
import 'package:recook/manager/user_manager.dart';
|
||||
import 'package:recook/pages/user/model/user_common_model.dart';
|
||||
import 'package:recook/utils/user_level_tool.dart';
|
||||
import 'package:recook/constants/header.dart';
|
||||
import 'package:recook/widgets/alert.dart';
|
||||
import 'package:recook/widgets/progress/re_toast.dart';
|
||||
import 'package:velocity_x/velocity_x.dart';
|
||||
|
||||
class GroupInviteCard extends StatelessWidget {
|
||||
final UserCommonModel model;
|
||||
const GroupInviteCard({Key key, @required this.model}) : super(key: key);
|
||||
_renderItem(String asset, String value) {
|
||||
return Row(
|
||||
children: [
|
||||
Image.asset(asset, width: 10.w, height: 10.w),
|
||||
value.text.size(11.sp).color(Color(0xFF999999)).make().expand(),
|
||||
],
|
||||
).expand();
|
||||
}
|
||||
|
||||
upgradeFunc() async {
|
||||
bool result = await Get.dialog(NormalContentDialog(
|
||||
title: '提示',
|
||||
content: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
'确定将'.text.size(14.sp).color(Color(0xFF333333)).center.make(),
|
||||
model.nickname.text
|
||||
.size(14.sp)
|
||||
.color(Color(0xFF0080FF))
|
||||
.center
|
||||
.make(),
|
||||
'开设成为您的分销店铺吗?'
|
||||
.text
|
||||
.size(14.sp)
|
||||
.color(Color(0xFF333333))
|
||||
.center
|
||||
.make(),
|
||||
10.hb,
|
||||
'确定后,您将获得${model.nickname}店铺销售额的分销店铺补贴,${model.nickname}将享受钻石店铺权益'
|
||||
.text
|
||||
.center
|
||||
.size(12.sp)
|
||||
.color(Color(0xFF333333))
|
||||
.make(),
|
||||
],
|
||||
),
|
||||
items: ['取消', '确定'],
|
||||
listener: (index) async {
|
||||
switch (index) {
|
||||
case 0:
|
||||
Get.back(result: false);
|
||||
break;
|
||||
case 1:
|
||||
final cancel = ReToast.loading(text: '推荐中');
|
||||
ResultData result = await HttpManager.post(
|
||||
APIV2.userAPI.recommendDiamond,
|
||||
{'userId': model.userId},
|
||||
);
|
||||
cancel();
|
||||
if (result.data['code'] == 'FAIL') {
|
||||
Get.back(result: false);
|
||||
showToast('${result.data['msg']}');
|
||||
} else
|
||||
Get.back(result: true);
|
||||
break;
|
||||
}
|
||||
},
|
||||
));
|
||||
|
||||
if (result == true) {
|
||||
Get.dialog(Center(
|
||||
child: GestureDetector(
|
||||
onTap: () => Get.back(),
|
||||
child: Material(
|
||||
color: Colors.transparent,
|
||||
child: Stack(
|
||||
children: [
|
||||
Image.asset(
|
||||
R.ASSETS_USER_GROUP_RECOMMEND_BG_PNG,
|
||||
height: 306.w,
|
||||
width: 344.w,
|
||||
),
|
||||
Positioned(
|
||||
left: 0,
|
||||
right: 0,
|
||||
top: 62.w,
|
||||
child: '恭喜! ${UserManager.instance.user.info.nickname}'
|
||||
.text
|
||||
.white
|
||||
.size(16.sp)
|
||||
.make()
|
||||
.centered(),
|
||||
),
|
||||
Positioned(
|
||||
left: 60.w,
|
||||
right: 60.w,
|
||||
top: 111.w,
|
||||
child: Column(
|
||||
children: [
|
||||
'您已成功将'
|
||||
.text
|
||||
.color(Color(0xFF333333))
|
||||
.size(16.sp)
|
||||
.make()
|
||||
.centered(),
|
||||
'${model.nickname}'
|
||||
.text
|
||||
.color(Color(0xFF008AFF))
|
||||
.size(16.sp)
|
||||
.make()
|
||||
.centered(),
|
||||
'开设成为您的分销店铺'
|
||||
.text
|
||||
.color(Color(0xFF333333))
|
||||
.size(16.sp)
|
||||
.make()
|
||||
.centered(),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Row(
|
||||
children: [
|
||||
16.wb,
|
||||
Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
ClipRRect(
|
||||
borderRadius: BorderRadius.circular(20.w),
|
||||
child: FadeInImage.assetNetwork(
|
||||
placeholder: R.ASSETS_PLACEHOLDER_NEW_1X1_A_PNG,
|
||||
image: Api.getImgUrl(model.headImgUrl),
|
||||
height: 40.w,
|
||||
width: 40.w,
|
||||
),
|
||||
),
|
||||
10.hb,
|
||||
Image.asset(
|
||||
UserLevelTool.getRoleLevelIcon(model.roleLevelEnum),
|
||||
width: 12.w,
|
||||
height: 12.w,
|
||||
),
|
||||
],
|
||||
),
|
||||
10.wb,
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
12.hb,
|
||||
model.nickname.text.black.size(14.sp).make(),
|
||||
8.hb,
|
||||
Row(
|
||||
children: [
|
||||
_renderItem(R.ASSETS_USER_ICON_PHONE_PNG, model.phone),
|
||||
_renderItem(R.ASSETS_USER_ICON_WECHAT_PNG, model.wechatNo),
|
||||
],
|
||||
),
|
||||
5.hb,
|
||||
Row(
|
||||
children: [
|
||||
_renderItem(
|
||||
R.ASSETS_USER_ICON_GROUP_PNG, model.count.toString()),
|
||||
_renderItem(R.ASSETS_USER_ICON_MONEY_PNG, 'TODO 销售额'),
|
||||
],
|
||||
),
|
||||
16.hb,
|
||||
],
|
||||
).expand(),
|
||||
Column(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
// if (model.isRecommand)
|
||||
MaterialButton(
|
||||
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
||||
minWidth: 0,
|
||||
padding: EdgeInsets.symmetric(horizontal: 20.w, vertical: 12.w),
|
||||
child: Image.asset(
|
||||
R.ASSETS_USER_USER_RECOMMEND_SINGLE_PNG,
|
||||
height: 17.w,
|
||||
),
|
||||
onPressed: upgradeFunc,
|
||||
),
|
||||
44.hb,
|
||||
],
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1,251 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:recook/pages/user/functions/user_func.dart';
|
||||
import 'package:recook/pages/user/invite/group_invite_card.dart';
|
||||
import 'package:recook/pages/user/model/user_common_model.dart';
|
||||
import 'package:recook/utils/user_level_tool.dart';
|
||||
import 'package:recook/widgets/alert.dart';
|
||||
import 'package:recook/widgets/recook/recook_scaffold.dart';
|
||||
import 'package:recook/widgets/refresh_widget.dart';
|
||||
import 'package:velocity_x/velocity_x.dart';
|
||||
import 'package:recook/constants/header.dart';
|
||||
|
||||
class MyGroupPageV2 extends StatefulWidget {
|
||||
MyGroupPageV2({Key key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_MyGroupPageV2State createState() => _MyGroupPageV2State();
|
||||
}
|
||||
|
||||
class _MyGroupPageV2State extends State<MyGroupPageV2> {
|
||||
TextEditingController _editingController = TextEditingController();
|
||||
List<UserCommonModel> _models = [];
|
||||
UsersMode usersMode = UsersMode.MY_GROUP;
|
||||
int get _allGroupCount {
|
||||
int value = 0;
|
||||
_models.forEach((element) {
|
||||
value += element.count;
|
||||
});
|
||||
return value;
|
||||
}
|
||||
|
||||
GSRefreshController _refreshController = GSRefreshController.auto();
|
||||
|
||||
_renderShitTab(String name, UsersMode mode) {
|
||||
bool same = mode == usersMode;
|
||||
return MaterialButton(
|
||||
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
||||
minWidth: double.infinity,
|
||||
child: name.text
|
||||
.size(14.sp)
|
||||
.color(same ? Colors.black : Color(0xFFA3A3A3))
|
||||
.make(),
|
||||
onPressed: () {
|
||||
usersMode = mode;
|
||||
_refreshController.requestRefresh();
|
||||
setState(() {});
|
||||
},
|
||||
).expand();
|
||||
}
|
||||
|
||||
Widget get _renderShitVerticalLine => Container(
|
||||
height: 20.w,
|
||||
width: 1.w,
|
||||
color: Color(0xFF979797),
|
||||
);
|
||||
|
||||
_renderTopCard() {
|
||||
return Material(
|
||||
color: Colors.white,
|
||||
borderRadius: BorderRadius.circular(4.w),
|
||||
clipBehavior: Clip.antiAlias,
|
||||
child: Column(
|
||||
children: [
|
||||
Container(
|
||||
height: 76.w,
|
||||
decoration: BoxDecoration(
|
||||
image: DecorationImage(
|
||||
image: AssetImage(UserLevelTool.currentCardImagePath()),
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
),
|
||||
alignment: Alignment.center,
|
||||
child: Image.asset(
|
||||
UserLevelTool.currentMedalImagePath(),
|
||||
height: 56.w,
|
||||
width: 56.w,
|
||||
),
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
50.hb,
|
||||
_renderShitTab('自营店铺', UsersMode.MY_GROUP),
|
||||
_renderShitVerticalLine,
|
||||
_renderShitTab('分销店铺', UsersMode.MY_RECOMMEND),
|
||||
_renderShitVerticalLine,
|
||||
_renderShitTab('代理店铺', UsersMode.MY_REWARD),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
).pSymmetric(h: 36.w, v: 10.w);
|
||||
}
|
||||
|
||||
_renderSearchBar() {
|
||||
return Material(
|
||||
color: Colors.white,
|
||||
shape: StadiumBorder(),
|
||||
child: Row(
|
||||
children: [
|
||||
34.hb,
|
||||
TextField(
|
||||
controller: _editingController,
|
||||
onEditingComplete: () {
|
||||
_refreshController.requestRefresh();
|
||||
},
|
||||
style: TextStyle(color: Colors.black),
|
||||
decoration: InputDecoration(
|
||||
isDense: true,
|
||||
border: InputBorder.none,
|
||||
contentPadding: EdgeInsets.symmetric(horizontal: 20.w),
|
||||
hintText: '请输入昵称/备注/手机号/微信号',
|
||||
hintStyle: TextStyle(
|
||||
fontSize: 12.sp,
|
||||
color: Color(0xFF999999),
|
||||
),
|
||||
),
|
||||
).expand(),
|
||||
Icon(
|
||||
Icons.search,
|
||||
color: Color(0xFF999999),
|
||||
),
|
||||
20.wb,
|
||||
],
|
||||
),
|
||||
).pSymmetric(h: 15.w, v: 10.w);
|
||||
}
|
||||
|
||||
_renderShitLine() {
|
||||
return Container(
|
||||
height: 10.w,
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
color: Color(0xFFE3E3E3),
|
||||
borderRadius: BorderRadius.circular(5.w),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
offset: Offset(0, 2.w),
|
||||
blurRadius: 4.w,
|
||||
color: Colors.black.withOpacity(0.2451),
|
||||
)
|
||||
],
|
||||
),
|
||||
margin: EdgeInsets.symmetric(horizontal: 6.w),
|
||||
alignment: Alignment.center,
|
||||
child: Container(
|
||||
height: 4.w,
|
||||
width: double.infinity,
|
||||
margin: EdgeInsets.symmetric(horizontal: 4.w),
|
||||
decoration: BoxDecoration(
|
||||
color: Color(0xFF6A6A6A).withOpacity(0.3178),
|
||||
borderRadius: BorderRadius.circular(2.w),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _renderShitList() {
|
||||
return Container(
|
||||
child: Column(
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
54.hb,
|
||||
16.wb,
|
||||
'我的自营店铺'.text.bold.size(14.sp).black.make(),
|
||||
MaterialButton(
|
||||
padding: EdgeInsets.all(4.w),
|
||||
minWidth: 0,
|
||||
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
||||
child: Icon(
|
||||
Icons.help_outline,
|
||||
size: 12.w,
|
||||
color: Color(0xFFA5A5A5),
|
||||
),
|
||||
onPressed: () {
|
||||
Alert.show(
|
||||
context,
|
||||
NormalContentDialog(
|
||||
title: '店铺贡献榜图标定义',
|
||||
content: Image.asset(R.ASSETS_USER_CARD_DESCRIPTION_PNG),
|
||||
items: ["确认"],
|
||||
listener: (index) => Alert.dismiss(context),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
Spacer(),
|
||||
Image.asset(
|
||||
R.ASSETS_USER_ICON_GROUP_PNG,
|
||||
width: 12.w,
|
||||
height: 12.w,
|
||||
),
|
||||
_allGroupCount.toString().text.size(12.sp).black.make(),
|
||||
20.wb,
|
||||
],
|
||||
),
|
||||
..._models.map((e) => GroupInviteCard(model: e)).toList().sepWidget(
|
||||
separate: Divider(
|
||||
indent: 65.w,
|
||||
endIndent: 15.w,
|
||||
height: 1.w,
|
||||
thickness: 1.w,
|
||||
)),
|
||||
],
|
||||
),
|
||||
margin: EdgeInsets.symmetric(horizontal: 16.w),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
borderRadius: BorderRadius.vertical(bottom: Radius.circular(2.w)),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
offset: Offset(0, 2.w),
|
||||
blurRadius: 4.w,
|
||||
color: Colors.black.withOpacity(0.1089),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return RecookScaffold(
|
||||
title: '我的店铺',
|
||||
whiteBg: true,
|
||||
body: NestedScrollView(
|
||||
headerSliverBuilder: (context, _) =>
|
||||
[SliverToBoxAdapter(child: _renderTopCard())],
|
||||
body: RefreshWidget(
|
||||
controller: _refreshController,
|
||||
onRefresh: () async {
|
||||
_models = await UserFunc.usersList(
|
||||
usersMode,
|
||||
keyword: _editingController.text,
|
||||
);
|
||||
_refreshController.refreshCompleted();
|
||||
setState(() {});
|
||||
},
|
||||
body: SingleChildScrollView(
|
||||
child: Column(
|
||||
children: [
|
||||
_renderSearchBar(),
|
||||
_renderShitLine(),
|
||||
_renderShitList(),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
).material(color: AppColor.frenchColor),
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in new issue