我的推荐页面

master
laiiihz 5 years ago
parent 3b39f1b605
commit 0a7f093c06

@ -114,6 +114,8 @@ class UserApi {
static const String realInfo = "/v1/users/profile/real_info";
static const String realBinding = "/v1/users/profile/info/real/binding";
static const String invite = "/v1/users/profile/invite/list";
static const String diamond_recommand_list =
"/v1/users/profile/invite/diamond";
static const String invite_count = "/v1/users/profile/invite/count";
static const String invite_remark_name =
"/v1/users/profile/invite/remark-name/update";

@ -2,7 +2,9 @@ import 'package:flutter/material.dart';
import 'package:recook/constants/app_image_resources.dart';
import 'package:recook/constants/constants.dart';
import 'package:recook/constants/header.dart';
import 'package:recook/pages/user/invite/diamond_recommand_page.dart';
import 'package:recook/utils/app_router.dart';
import 'package:recook/utils/custom_route.dart';
class InviteView extends StatefulWidget {
final bool isDiamond; //
@ -148,7 +150,7 @@ class _InviteViewState extends State<InviteView> {
),
title: '我的推荐',
subTitle: '呼朋唤友·享收益',
onTap: () {});
onTap: () => CRoute.push(context, DiamondRecommandPage()));
}
Widget _buildCard({

@ -0,0 +1,60 @@
class DiamondRecommandModel {
num userId;
String nickname;
String headImgUrl;
num role;
num count;
String createdAt;
String remarkName;
String phoneNum;
String wechatNo;
num roleId;
num userLevel;
num roleLevel;
DiamondRecommandModel(
{this.userId,
this.nickname,
this.headImgUrl,
this.role,
this.count,
this.createdAt,
this.remarkName,
this.phoneNum,
this.wechatNo,
this.roleId,
this.userLevel,
this.roleLevel});
DiamondRecommandModel.fromJson(Map<String, dynamic> json) {
userId = json['userId'];
nickname = json['nickname'];
headImgUrl = json['headImgUrl'];
role = json['role'];
count = json['count'];
createdAt = json['createdAt'];
remarkName = json['remarkName'];
phoneNum = json['phoneNum'];
wechatNo = json['wechatNo'];
roleId = json['roleId'];
userLevel = json['userLevel'];
roleLevel = json['roleLevel'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['userId'] = this.userId;
data['nickname'] = this.nickname;
data['headImgUrl'] = this.headImgUrl;
data['role'] = this.role;
data['count'] = this.count;
data['createdAt'] = this.createdAt;
data['remarkName'] = this.remarkName;
data['phoneNum'] = this.phoneNum;
data['wechatNo'] = this.wechatNo;
data['roleId'] = this.roleId;
data['userLevel'] = this.userLevel;
data['roleLevel'] = this.roleLevel;
return data;
}
}

@ -0,0 +1,153 @@
import 'package:flutter/material.dart';
import 'package:recook/constants/api.dart';
import 'package:recook/constants/header.dart';
import 'package:recook/manager/http_manager.dart';
import 'package:recook/manager/user_manager.dart';
import 'package:recook/pages/user/invite/diamond_recommand_model.dart';
import 'package:recook/widgets/custom_app_bar.dart';
import 'package:recook/widgets/recook_back_button.dart';
import 'package:recook/widgets/refresh_widget.dart';
class DiamondRecommandPage extends StatefulWidget {
DiamondRecommandPage({Key key}) : super(key: key);
@override
_DiamondRecommandPageState createState() => _DiamondRecommandPageState();
}
class _DiamondRecommandPageState extends State<DiamondRecommandPage> {
List<DiamondRecommandModel> models = [];
GSRefreshController _gsRefreshController = GSRefreshController();
@override
void initState() {
super.initState();
Future.delayed(Duration(milliseconds: 300), () {
_gsRefreshController.requestRefresh();
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColor.frenchColor,
appBar: CustomAppBar(
leading: RecookBackButton(),
appBackground: Colors.white,
title: Text(
'我的推荐',
style: TextStyle(
color: Color(0xFF333333),
fontWeight: FontWeight.bold,
),
),
),
body: RefreshWidget(
controller: _gsRefreshController,
onRefresh: () {
HttpManager.post(UserApi.diamond_recommand_list, {
'userId': UserManager.instance.user.info.id,
}).then((resultData) {
_gsRefreshController.refreshCompleted();
setState(() {
models = resultData.data == null
? []
: resultData.data['data'] == null
? []
: (resultData.data['data'] as List)
.map((e) => DiamondRecommandModel.fromJson(e))
.toList();
});
});
},
body: ListView.builder(
padding: EdgeInsets.symmetric(vertical: rSize(5)),
itemBuilder: (context, index) {
return _buildCard(models[index]);
},
itemCount: models.length,
),
),
);
}
_buildCard(DiamondRecommandModel model) {
return Container(
margin: EdgeInsets.symmetric(
horizontal: rSize(15),
vertical: rSize(5),
),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(rSize(5)),
color: Colors.white,
),
padding: EdgeInsets.all(rSize(12)),
child: Row(
children: [
Container(
width: rSize(46),
height: rSize(46),
decoration: BoxDecoration(
border: Border.all(
color: Color(0xFFFEC053),
width: rSize(1),
),
borderRadius: BorderRadius.circular(rSize(23)),
image: DecorationImage(
image: NetworkImage(
Api.getImgUrl(model.headImgUrl),
),
),
),
),
SizedBox(width: rSize(12)),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
model.nickname,
style: TextStyle(
color: Color(0xFF333333),
fontSize: rSP(14),
),
),
SizedBox(height: rSize(6)),
Row(
children: [
Image.asset(
R.ASSETS_INVITE_DETAIL_PHONE_PNG,
height: rSize(12),
width: rSize(12),
),
SizedBox(width: rSize(5)),
Text(
model.phoneNum,
style: TextStyle(
color: Color(0xFF999999),
fontSize: rSP(12),
),
),
SizedBox(width: rSize(20)),
Image.asset(
R.ASSETS_INVITE_DETAIL_TIME_PNG,
height: rSize(12),
width: rSize(12),
),
SizedBox(width: rSize(5)),
Text(
model.createdAt,
style: TextStyle(
color: Color(0xFF999999),
fontSize: rSP(12),
),
),
],
),
],
),
),
],
),
);
}
}
Loading…
Cancel
Save