@@ -9,13 +9,16 @@ class TeamDetailsRepository { | |||||
TeamDetailsDataModel _dataModel; | TeamDetailsDataModel _dataModel; | ||||
/// 初始化数据 | /// 初始化数据 | ||||
Future<dynamic> fetchNetData(final Map<String, dynamic> data) async { | |||||
Future<TeamDetailsDataModel> fetchNetData(final Map<String, dynamic> data) async { | |||||
try { | try { | ||||
if (!EmptyUtil.isEmpty(data)) { | if (!EmptyUtil.isEmpty(data)) { | ||||
String fansId = data['uid']; | String fansId = data['uid']; | ||||
if (!EmptyUtil.isEmpty(fansId)) { | if (!EmptyUtil.isEmpty(fansId)) { | ||||
var result = await NetUtil.post('/api/v1/user/fan/$fansId', method: NetMethod.GET); | var result = await NetUtil.post('/api/v1/user/fan/$fansId', method: NetMethod.GET); | ||||
if (NetUtil.isSuccess(result) && !EmptyUtil.isEmpty(result[GlobalConfig.HTTP_RESPONSE_KEY_DATA])) {} | |||||
if (NetUtil.isSuccess(result) && !EmptyUtil.isEmpty(result[GlobalConfig.HTTP_RESPONSE_KEY_DATA])) { | |||||
_dataModel = TeamDetailsDataModel.fromJson(result[GlobalConfig.HTTP_RESPONSE_KEY_DATA]); | |||||
return _dataModel; | |||||
} | |||||
} | } | ||||
} | } | ||||
} catch (e, s) { | } catch (e, s) { | ||||
@@ -1 +1,124 @@ | |||||
class TeamDetailsDataModel{} | |||||
import 'package:zhiying_base_widget/widgets/team/fans_list/model/team_fans_list_model.dart'; | |||||
import 'package:meta/meta.dart'; | |||||
@immutable | |||||
class TeamDetailsDataModel { | |||||
List<TeamDetailsDataModelDashBoard> dash_board; | |||||
TeamFansListItemModel info; | |||||
TeamFansListItemModel referrer; | |||||
TeamDetailsDataModel({this.dash_board, this.info, this.referrer}); | |||||
factory TeamDetailsDataModel.fromJson(Map<String, dynamic> json) { | |||||
return TeamDetailsDataModel( | |||||
dash_board: json['dash_board'] != null ? (json['dash_board'] as List).map((i) => TeamDetailsDataModelDashBoard.fromJson(i)).toList() : null, | |||||
info: json['info'] != null ? TeamFansListItemModel.fromJson(json['info']) : null, | |||||
referrer: json['referrer'] != null ? TeamFansListItemModel.fromJson(json['referrer']) : null, | |||||
); | |||||
} | |||||
Map<String, dynamic> toJson() { | |||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
if (this.dash_board != null) { | |||||
data['dash_board'] = this.dash_board.map((v) => v.toJson()).toList(); | |||||
} | |||||
if (this.info != null) { | |||||
data['info'] = this.info.toJson(); | |||||
} | |||||
if (this.referrer != null) { | |||||
data['referrer'] = this.referrer.toJson(); | |||||
} | |||||
return data; | |||||
} | |||||
} | |||||
// class TeamDetailsDataModelReferrer { | |||||
// String referrer_avatar; | |||||
// String referrer_invite_code; | |||||
// String referrer_phone; | |||||
// String referrer_username; | |||||
// String referrer_wechat; | |||||
// String uid; | |||||
// | |||||
// TeamDetailsDataModelReferrer({this.referrer_avatar, this.referrer_invite_code, this.referrer_phone, this.referrer_username, this.referrer_wechat, this.uid}); | |||||
// | |||||
// // 获取模糊手机号码 | |||||
// get blurMobile => !EmptyUtil.isEmpty(referrer_phone) | |||||
// ? referrer_phone.length == 11 ? '${referrer_phone.substring(0, 3)}****${referrer_phone.substring(7, referrer_phone.length)}' : referrer_phone | |||||
// : referrer_phone; | |||||
// | |||||
// // 获取模糊昵称 | |||||
// get blurUserName => | |||||
// !EmptyUtil.isEmpty(referrer_username) ? referrer_username.length > 6 ? '${referrer_username.substring(0, 3)}****${referrer_username.substring(referrer_username.length - 3, referrer_username.length)}' : referrer_username : referrer_username; | |||||
// | |||||
// // 获取模糊微信 | |||||
// get blurWeChat => !EmptyUtil.isEmpty(referrer_wechat) ? referrer_wechat.length > 6 ? '${referrer_wechat.substring(0, 3)}****${referrer_wechat.substring(referrer_wechat.length - 3, referrer_wechat.length)}' : referrer_wechat : referrer_wechat; | |||||
// | |||||
// factory TeamDetailsDataModelReferrer.fromJson(Map<String, dynamic> json) { | |||||
// return TeamDetailsDataModelReferrer( | |||||
// referrer_avatar: json['referrer_avatar'], | |||||
// referrer_invite_code: json['referrer_invite_code'], | |||||
// referrer_phone: json['referrer_phone'], | |||||
// referrer_username: json['referrer_username'], | |||||
// referrer_wechat: json['referrer_wechat'], | |||||
// uid: json['uid'], | |||||
// ); | |||||
// } | |||||
// | |||||
// Map<String, dynamic> toJson() { | |||||
// final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
// data['referrer_avatar'] = this.referrer_avatar; | |||||
// data['referrer_invite_code'] = this.referrer_invite_code; | |||||
// data['referrer_phone'] = this.referrer_phone; | |||||
// data['referrer_username'] = this.referrer_username; | |||||
// data['referrer_wechat'] = this.referrer_wechat; | |||||
// data['uid'] = this.uid; | |||||
// return data; | |||||
// } | |||||
// } | |||||
class TeamDetailsDataModelDashBoard { | |||||
List<TeamDetailsDashBoardItem> list; | |||||
String type; | |||||
TeamDetailsDataModelDashBoard({this.list, this.type}); | |||||
factory TeamDetailsDataModelDashBoard.fromJson(Map<String, dynamic> json) { | |||||
return TeamDetailsDataModelDashBoard( | |||||
list: json['list'] != null ? (json['list'] as List).map((i) => TeamDetailsDashBoardItem.fromJson(i)).toList() : null, | |||||
type: json['type'], | |||||
); | |||||
} | |||||
Map<String, dynamic> toJson() { | |||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
data['type'] = this.type; | |||||
if (this.list != null) { | |||||
data['list'] = this.list.map((v) => v.toJson()).toList(); | |||||
} | |||||
return data; | |||||
} | |||||
} | |||||
class TeamDetailsDashBoardItem { | |||||
List<String> data_list; | |||||
String type; | |||||
TeamDetailsDashBoardItem({this.data_list, this.type}); | |||||
factory TeamDetailsDashBoardItem.fromJson(Map<String, dynamic> json) { | |||||
return TeamDetailsDashBoardItem( | |||||
data_list: json['data_list'] != null ? new List<String>.from(json['data_list']) : null, | |||||
type: json['type'], | |||||
); | |||||
} | |||||
Map<String, dynamic> toJson() { | |||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
data['type'] = this.type; | |||||
if (this.data_list != null) { | |||||
data['data_list'] = this.data_list; | |||||
} | |||||
return data; | |||||
} | |||||
} |
@@ -1,7 +1,6 @@ | |||||
import 'package:zhiying_base_widget/pages/team_page/model/team_style_model.dart'; | import 'package:zhiying_base_widget/pages/team_page/model/team_style_model.dart'; | ||||
import 'package:meta/meta.dart'; | import 'package:meta/meta.dart'; | ||||
@immutable | @immutable | ||||
class TeamDetailsStyleModel { | class TeamDetailsStyleModel { | ||||
String app_bar_bg_color; | String app_bar_bg_color; | ||||
@@ -12,8 +11,10 @@ class TeamDetailsStyleModel { | |||||
List<TeamDetailsStyleModelDashbord> dashbord; | List<TeamDetailsStyleModelDashbord> dashbord; | ||||
List<TeamDetailsStyleModelDashbordItem> dashbord_items; | List<TeamDetailsStyleModelDashbordItem> dashbord_items; | ||||
String dashbord_line_color; | String dashbord_line_color; | ||||
String name_color; | |||||
String name_selected_color; | |||||
TeamDetailsStyleModelHeaderReferrer header_referrer; | TeamDetailsStyleModelHeaderReferrer header_referrer; | ||||
TeamViewItem self_info; | |||||
TeamViewItemStyle self_info; | |||||
TeamDetailsStyleModel({ | TeamDetailsStyleModel({ | ||||
this.app_bar_bg_color, | this.app_bar_bg_color, | ||||
@@ -26,10 +27,14 @@ class TeamDetailsStyleModel { | |||||
this.dashbord_line_color, | this.dashbord_line_color, | ||||
this.header_referrer, | this.header_referrer, | ||||
this.self_info, | this.self_info, | ||||
this.name_color, | |||||
this.name_selected_color, | |||||
}); | }); | ||||
factory TeamDetailsStyleModel.fromJson(Map<String, dynamic> json) { | factory TeamDetailsStyleModel.fromJson(Map<String, dynamic> json) { | ||||
return TeamDetailsStyleModel( | return TeamDetailsStyleModel( | ||||
name_color: json['name_color'], | |||||
name_selected_color: json['name_selected_color'], | |||||
app_bar_bg_color: json['app_bar_bg_color'], | app_bar_bg_color: json['app_bar_bg_color'], | ||||
app_bar_bg_img: json['app_bar_bg_img'], | app_bar_bg_img: json['app_bar_bg_img'], | ||||
app_bar_name: json['app_bar_name'], | app_bar_name: json['app_bar_name'], | ||||
@@ -39,7 +44,7 @@ class TeamDetailsStyleModel { | |||||
dashbord_items: json['dashbord_items'] != null ? (json['dashbord_items'] as List).map((i) => TeamDetailsStyleModelDashbordItem.fromJson(i)).toList() : null, | dashbord_items: json['dashbord_items'] != null ? (json['dashbord_items'] as List).map((i) => TeamDetailsStyleModelDashbordItem.fromJson(i)).toList() : null, | ||||
dashbord_line_color: json['dashbord_line_color'], | dashbord_line_color: json['dashbord_line_color'], | ||||
header_referrer: json['header_referrer'] != null ? TeamDetailsStyleModelHeaderReferrer.fromJson(json['header_referrer']) : null, | header_referrer: json['header_referrer'] != null ? TeamDetailsStyleModelHeaderReferrer.fromJson(json['header_referrer']) : null, | ||||
self_info: json['self_info'] != null ? TeamViewItem.fromJson(json['self_info']) : null, | |||||
self_info: json['self_info'] != null ? TeamViewItemStyle.fromJson(json['self_info']) : null, | |||||
); | ); | ||||
} | } | ||||
@@ -51,6 +56,8 @@ class TeamDetailsStyleModel { | |||||
data['app_bar_name_color'] = this.app_bar_name_color; | data['app_bar_name_color'] = this.app_bar_name_color; | ||||
data['bg_color'] = this.bg_color; | data['bg_color'] = this.bg_color; | ||||
data['dashbord_line_color'] = this.dashbord_line_color; | data['dashbord_line_color'] = this.dashbord_line_color; | ||||
data['name_selected_color'] = this.name_selected_color; | |||||
data['name_color'] = name_color; | |||||
if (this.dashbord != null) { | if (this.dashbord != null) { | ||||
data['dashbord'] = this.dashbord.map((v) => v.toJson()).toList(); | data['dashbord'] = this.dashbord.map((v) => v.toJson()).toList(); | ||||
} | } | ||||
@@ -127,47 +134,51 @@ class TeamDetailsStyleModelHeaderReferrer { | |||||
String wx_color; | String wx_color; | ||||
String wx_text; | String wx_text; | ||||
String wx_value_color; | String wx_value_color; | ||||
TeamDetailsStyleModelHeaderReferrer( | |||||
{this.bar_color, | |||||
this.copy_btn_bg_color, | |||||
this.copy_btn_icon, | |||||
this.copy_btn_text, | |||||
this.copy_btn_text_color, | |||||
this.last_login_text, | |||||
this.last_login_text_color, | |||||
this.last_login_value_color, | |||||
this.phone_color, | |||||
this.phone_text, | |||||
this.title, | |||||
this.title_bg_color, | |||||
this.title_bg_color_t, | |||||
this.title_color, | |||||
this.username_color, | |||||
this.wx_color, | |||||
this.wx_text, | |||||
this.wx_value_color}); | |||||
String lv_text_color; | |||||
TeamDetailsStyleModelHeaderReferrer({ | |||||
this.bar_color, | |||||
this.copy_btn_bg_color, | |||||
this.copy_btn_icon, | |||||
this.copy_btn_text, | |||||
this.copy_btn_text_color, | |||||
this.last_login_text, | |||||
this.last_login_text_color, | |||||
this.last_login_value_color, | |||||
this.phone_color, | |||||
this.phone_text, | |||||
this.title, | |||||
this.title_bg_color, | |||||
this.title_bg_color_t, | |||||
this.title_color, | |||||
this.username_color, | |||||
this.wx_color, | |||||
this.wx_text, | |||||
this.wx_value_color, | |||||
this.lv_text_color, | |||||
}); | |||||
factory TeamDetailsStyleModelHeaderReferrer.fromJson(Map<String, dynamic> json) { | factory TeamDetailsStyleModelHeaderReferrer.fromJson(Map<String, dynamic> json) { | ||||
return TeamDetailsStyleModelHeaderReferrer( | return TeamDetailsStyleModelHeaderReferrer( | ||||
bar_color: json['bar_color'], | |||||
copy_btn_bg_color: json['copy_btn_bg_color'], | |||||
copy_btn_icon: json['copy_btn_icon'], | |||||
copy_btn_text: json['copy_btn_text'], | |||||
copy_btn_text_color: json['copy_btn_text_color'], | |||||
last_login_text: json['last_login_text'], | |||||
last_login_text_color: json['last_login_text_color'], | |||||
last_login_value_color: json['last_login_value_color'], | |||||
phone_color: json['phone_color'], | |||||
phone_text: json['phone_text'], | |||||
title: json['title'], | |||||
title_bg_color: json['title_bg_color'], | |||||
title_bg_color_t: json['title_bg_color_t'], | |||||
title_color: json['title_color'], | |||||
username_color: json['username_color'], | |||||
wx_color: json['wx_color'], | |||||
wx_text: json['wx_text'], | |||||
wx_value_color: json['wx_value_color'], | |||||
bar_color: json['bar_color'], | |||||
copy_btn_bg_color: json['copy_btn_bg_color'], | |||||
copy_btn_icon: json['copy_btn_icon'], | |||||
copy_btn_text: json['copy_btn_text'], | |||||
copy_btn_text_color: json['copy_btn_text_color'], | |||||
last_login_text: json['last_login_text'], | |||||
last_login_text_color: json['last_login_text_color'], | |||||
last_login_value_color: json['last_login_value_color'], | |||||
phone_color: json['phone_color'], | |||||
phone_text: json['phone_text'], | |||||
title: json['title'], | |||||
title_bg_color: json['title_bg_color'], | |||||
title_bg_color_t: json['title_bg_color_t'], | |||||
title_color: json['title_color'], | |||||
username_color: json['username_color'], | |||||
wx_color: json['wx_color'], | |||||
wx_text: json['wx_text'], | |||||
wx_value_color: json['wx_value_color'], | |||||
lv_text_color: json['lv_text_color'], | |||||
); | ); | ||||
} | } | ||||
@@ -191,30 +202,25 @@ class TeamDetailsStyleModelHeaderReferrer { | |||||
data['wx_color'] = this.wx_color; | data['wx_color'] = this.wx_color; | ||||
data['wx_text'] = this.wx_text; | data['wx_text'] = this.wx_text; | ||||
data['wx_value_color'] = this.wx_value_color; | data['wx_value_color'] = this.wx_value_color; | ||||
data['lv_text_color'] = this.lv_text_color; | |||||
return data; | return data; | ||||
} | } | ||||
} | } | ||||
class TeamDetailsStyleModelDashbord { | class TeamDetailsStyleModelDashbord { | ||||
String name; | String name; | ||||
String name_color; | |||||
String name_selected_color; | |||||
TeamDetailsStyleModelDashbord({this.name, this.name_color, this.name_selected_color}); | |||||
TeamDetailsStyleModelDashbord({this.name}); | |||||
factory TeamDetailsStyleModelDashbord.fromJson(Map<String, dynamic> json) { | factory TeamDetailsStyleModelDashbord.fromJson(Map<String, dynamic> json) { | ||||
return TeamDetailsStyleModelDashbord( | return TeamDetailsStyleModelDashbord( | ||||
name: json['name'], | name: json['name'], | ||||
name_color: json['name_color'], | |||||
name_selected_color: json['name_selected_color'], | |||||
); | ); | ||||
} | } | ||||
Map<String, dynamic> toJson() { | Map<String, dynamic> toJson() { | ||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | final Map<String, dynamic> data = new Map<String, dynamic>(); | ||||
data['name'] = this.name; | data['name'] = this.name; | ||||
data['name_color'] = this.name_color; | |||||
data['name_selected_color'] = this.name_selected_color; | |||||
return data; | return data; | ||||
} | } | ||||
} | } |
@@ -34,15 +34,50 @@ class _TeamDetailsPage extends StatefulWidget { | |||||
} | } | ||||
class _TeamDetailsPageState extends State<_TeamDetailsPage> { | class _TeamDetailsPageState extends State<_TeamDetailsPage> { | ||||
int _selectIndex = 0; | |||||
TabController _controller; | |||||
@override | |||||
void initState() { | |||||
super.initState(); | |||||
} | |||||
void _initTabController(TeamDetailsStyleModel styleModel) { | |||||
int length = styleModel?.dashbord?.length ?? 0; | |||||
if (null == _controller && length > 0) { | |||||
_controller = TabController(length: length, vsync: ScrollableState()); | |||||
_controller.addListener(_tabListener); | |||||
} | |||||
} | |||||
void _tabListener() { | |||||
if (!_controller.indexIsChanging) { | |||||
setState(() { | |||||
_selectIndex = _controller.index; | |||||
}); | |||||
} | |||||
} | |||||
@override | |||||
void dispose() { | |||||
_controller?.removeListener(_tabListener); | |||||
_controller?.dispose(); | |||||
super.dispose(); | |||||
} | |||||
@override | @override | ||||
Widget build(BuildContext context) { | Widget build(BuildContext context) { | ||||
return BlocConsumer<TeamDetailsBloc, TeamDetailsState>( | return BlocConsumer<TeamDetailsBloc, TeamDetailsState>( | ||||
listener: (context, state) {}, | listener: (context, state) {}, | ||||
buildWhen: (prov, current) { | buildWhen: (prov, current) { | ||||
if (current is TeamDetailsErrorState) { | |||||
return false; | |||||
} | |||||
return true; | return true; | ||||
}, | }, | ||||
builder: (context, state) { | builder: (context, state) { | ||||
if (state is TeamDetailsLoadedState) { | if (state is TeamDetailsLoadedState) { | ||||
_initTabController(state?.styleModel); | |||||
return _getMainWidget(state?.styleModel, state?.dataModel); | return _getMainWidget(state?.styleModel, state?.dataModel); | ||||
} | } | ||||
return _getMainWidget(null, null); | return _getMainWidget(null, null); | ||||
@@ -50,8 +85,6 @@ class _TeamDetailsPageState extends State<_TeamDetailsPage> { | |||||
); | ); | ||||
} | } | ||||
TabController controller = TabController(length: 2, vsync: ScrollableState()); | |||||
/// 主视图 | /// 主视图 | ||||
Widget _getMainWidget(TeamDetailsStyleModel styleModel, TeamDetailsDataModel dataModel) { | Widget _getMainWidget(TeamDetailsStyleModel styleModel, TeamDetailsDataModel dataModel) { | ||||
return Scaffold( | return Scaffold( | ||||
@@ -60,72 +93,65 @@ class _TeamDetailsPageState extends State<_TeamDetailsPage> { | |||||
slivers: <Widget>[ | slivers: <Widget>[ | ||||
/// 头部Bar | /// 头部Bar | ||||
SliverAppBar( | SliverAppBar( | ||||
// expandedHeight: 200.0, | |||||
leading: IconButton( | |||||
icon: Icon( | |||||
Icons.arrow_back_ios, | |||||
size: 22, | |||||
color: HexColor.fromHex( '#333333'), | |||||
), | |||||
onPressed: () => Navigator.maybePop(context), | |||||
), | |||||
backgroundColor: HexColor.fromHex(styleModel?.app_bar_bg_color ?? '#FFFFFF'), | |||||
floating: true, | |||||
pinned: true, | |||||
title: Text( | |||||
styleModel?.app_bar_name ?? '用户详情', | |||||
style: TextStyle(color: HexColor.fromHex( styleModel?.app_bar_name_color ?? '#333333'), fontWeight: FontWeight.bold, fontSize: 18), | |||||
), | |||||
centerTitle: true, | |||||
elevation: 0, | |||||
), | |||||
// expandedHeight: 200.0, | |||||
leading: IconButton( | |||||
icon: Icon( | |||||
Icons.arrow_back_ios, | |||||
size: 22, | |||||
color: HexColor.fromHex('#333333'), | |||||
), | |||||
onPressed: () => Navigator.maybePop(context)), | |||||
backgroundColor: HexColor.fromHex(styleModel?.app_bar_bg_color ?? '#FFFFFF'), | |||||
floating: true, | |||||
pinned: true, | |||||
title: Text(styleModel?.app_bar_name ?? '用户详情', | |||||
style: TextStyle(color: HexColor.fromHex(styleModel?.app_bar_name_color ?? '#333333'), fontWeight: FontWeight.bold, fontSize: 18)), | |||||
centerTitle: true, | |||||
elevation: 0), | |||||
/// TA的推荐人 | /// TA的推荐人 | ||||
SliverToBoxAdapter( | |||||
child: TeamDetailsReferrerWidget(), | |||||
), | |||||
SliverToBoxAdapter(child: TeamDetailsReferrerWidget(styleModel?.header_referrer, dataModel?.referrer)), | |||||
/// 推荐人的信息 | /// 推荐人的信息 | ||||
SliverToBoxAdapter( | |||||
child: TeamFansItem(null, null), | |||||
), | |||||
SliverToBoxAdapter(child: TeamFansItem(styleModel?.self_info, dataModel?.info)), | |||||
/// 本月数据 & 上个月数据 | /// 本月数据 & 上个月数据 | ||||
SliverToBoxAdapter( | SliverToBoxAdapter( | ||||
child: Container( | |||||
height: 30, | |||||
width: double.infinity, | |||||
margin: const EdgeInsets.only(left: 50, right: 50, top: 10), | |||||
child: TabBar( | |||||
labelStyle: TextStyle(fontSize: 15, fontWeight: FontWeight.bold), | |||||
indicatorColor: HexColor.fromHex('#F94B47'), | |||||
indicator: MaterialIndicator( | |||||
height: 2, bottomRightRadius: 2, bottomLeftRadius: 2, topRightRadius: 2, topLeftRadius: 2, color: HexColor.fromHex('#F94B47'), horizontalPadding: 17), | |||||
unselectedLabelStyle: TextStyle(fontSize: 15), | |||||
indicatorSize: TabBarIndicatorSize.label, | |||||
labelColor: HexColor.fromHex('#000000'), | |||||
unselectedLabelColor: HexColor.fromHex('#999999'), | |||||
controller: controller, | |||||
tabs: <Widget>[ | |||||
Text('本月数据'), | |||||
Text('上月数据'), | |||||
], | |||||
child: Visibility( | |||||
visible: null != _controller, | |||||
child: Container( | |||||
height: 30, | |||||
width: double.infinity, | |||||
margin: const EdgeInsets.only(left: 50, right: 50, top: 10), | |||||
child: TabBar( | |||||
labelStyle: TextStyle(fontSize: 15, fontWeight: FontWeight.bold), | |||||
indicatorColor: HexColor.fromHex(styleModel?.dashbord_line_color ?? '#F94B47'), | |||||
indicator: MaterialIndicator( | |||||
height: 2, | |||||
bottomRightRadius: 2, | |||||
bottomLeftRadius: 2, | |||||
topRightRadius: 2, | |||||
topLeftRadius: 2, | |||||
color: HexColor.fromHex(styleModel?.dashbord_line_color ?? '#F94B47'), | |||||
horizontalPadding: 17, | |||||
), | |||||
unselectedLabelStyle: TextStyle(fontSize: 15), | |||||
indicatorSize: TabBarIndicatorSize.label, | |||||
labelColor: HexColor.fromHex(styleModel?.name_selected_color ?? '#000000'), | |||||
unselectedLabelColor: HexColor.fromHex(styleModel?.name_color ?? '#999999'), | |||||
controller: _controller, | |||||
tabs: _buildTabs(styleModel), | |||||
), | |||||
), | ), | ||||
), | ), | ||||
), | ), | ||||
/// 邀请贡献 | /// 邀请贡献 | ||||
SliverToBoxAdapter( | |||||
child: TeamDetailsMonthDataWidget(), | |||||
), | |||||
SliverToBoxAdapter( | |||||
child: TeamDetailsMonthDataWidget(), | |||||
), | |||||
SliverToBoxAdapter( | |||||
child: TeamDetailsMonthDataWidget(), | |||||
), | |||||
SliverToBoxAdapter(child: _buildDataCar(styleModel, dataModel)), | |||||
// | |||||
// SliverToBoxAdapter( | |||||
// child: TeamDetailsMonthDataWidget(), | |||||
// ), | |||||
SliverPadding(padding: const EdgeInsets.only(bottom: 28)) | SliverPadding(padding: const EdgeInsets.only(bottom: 28)) | ||||
], | ], | ||||
@@ -133,10 +159,40 @@ class _TeamDetailsPageState extends State<_TeamDetailsPage> { | |||||
); | ); | ||||
} | } | ||||
/// 推荐人 | |||||
/// 推荐人的信息 | |||||
/// 本月数据 & 上个月数据 | /// 本月数据 & 上个月数据 | ||||
List<Widget> _buildTabs(TeamDetailsStyleModel styleModel) { | |||||
int length = styleModel?.dashbord?.length ?? 0; | |||||
List<Widget> widgets = []; | |||||
if (length > 0) { | |||||
styleModel.dashbord.forEach((element) { | |||||
widgets.add(Text(element.name)); | |||||
}); | |||||
} else { | |||||
widgets.add(Text('本月数据')); | |||||
widgets.add(Text('上月数据')); | |||||
} | |||||
return widgets; | |||||
} | |||||
/// 贡献值自购等 | |||||
Widget _buildDataCar(TeamDetailsStyleModel styleModel, TeamDetailsDataModel dataModel) { | |||||
List<Widget> widgets = []; | |||||
int styleLength = styleModel?.dashbord_items?.length ?? 0; | |||||
int dataLength = dataModel?.dash_board?.length ?? 0; | |||||
int dataItemLength = dataLength > 0 ? dataModel.dash_board[0]?.list?.length ?? 0 : 0; | |||||
if (styleLength > 0) { | |||||
// styleModel.dashbord_items.forEach((element) { | |||||
// widgets.add(TeamDetailsMonthDataWidget(element, dataLength > 0 ? dataModel?.dash_board[_selectIndex] : null)); | |||||
// }); | |||||
for (int i = 0; i < styleLength; i++) { | |||||
TeamDetailsStyleModelDashbordItem element = styleModel.dashbord_items[i]; | |||||
TeamDetailsDashBoardItem dataElement = (dataLength > 0 && dataItemLength > 0 && dataItemLength == styleLength) ? dataModel.dash_board[_selectIndex].list[i] : null; | |||||
widgets.add(TeamDetailsMonthDataWidget(element, dataElement)); | |||||
} | |||||
return Column(children: widgets); | |||||
} else { | |||||
return Container(); | |||||
} | |||||
} | |||||
} | } |
@@ -41,7 +41,7 @@ class TeamStyleModel { | |||||
String teamViewEmptyImg; | String teamViewEmptyImg; | ||||
List<TeamViewSortList> teamViewSortList; | List<TeamViewSortList> teamViewSortList; | ||||
List<TeamViewItemTitleList> teamViewItemTitleList; | List<TeamViewItemTitleList> teamViewItemTitleList; | ||||
TeamViewItem teamViewItem; | |||||
TeamViewItemStyle teamViewItem; | |||||
String headerNoReferrerInputColor; | String headerNoReferrerInputColor; | ||||
String headerNoReferrerInputBgColor; | String headerNoReferrerInputBgColor; | ||||
@@ -169,7 +169,7 @@ class TeamStyleModel { | |||||
teamViewItemTitleList.add(new TeamViewItemTitleList.fromJson(v)); | teamViewItemTitleList.add(new TeamViewItemTitleList.fromJson(v)); | ||||
}); | }); | ||||
} | } | ||||
teamViewItem = json['team_view_item'] != null ? new TeamViewItem.fromJson(json['team_view_item']) : null; | |||||
teamViewItem = json['team_view_item'] != null ? new TeamViewItemStyle.fromJson(json['team_view_item']) : null; | |||||
headerNoReferrerInputColor = json['header_no_referrer_intput_color']; | headerNoReferrerInputColor = json['header_no_referrer_intput_color']; | ||||
headerNoReferrerInputBgColor = json['header_no_referrer_intput_bg_color']; | headerNoReferrerInputBgColor = json['header_no_referrer_intput_bg_color']; | ||||
headerReferrerInvitecodeText = json['header_referrer_invitecode_text']; | headerReferrerInvitecodeText = json['header_referrer_invitecode_text']; | ||||
@@ -437,7 +437,7 @@ class TeamViewItemTitleList { | |||||
} | } | ||||
} | } | ||||
class TeamViewItem extends SkipModel{ | |||||
class TeamViewItemStyle extends SkipModel{ | |||||
String lvTextColor; | String lvTextColor; | ||||
String lvBgColor; | String lvBgColor; | ||||
String lvBgImg; | String lvBgImg; | ||||
@@ -478,7 +478,7 @@ class TeamViewItem extends SkipModel{ | |||||
String monthEarningTextColor; | String monthEarningTextColor; | ||||
String monthEarningValueColor; | String monthEarningValueColor; | ||||
TeamViewItem( | |||||
TeamViewItemStyle( | |||||
{this.lvTextColor, | {this.lvTextColor, | ||||
this.lvBgColor, | this.lvBgColor, | ||||
this.lvBgImg, | this.lvBgImg, | ||||
@@ -519,7 +519,7 @@ class TeamViewItem extends SkipModel{ | |||||
this.monthEarningTextColor, | this.monthEarningTextColor, | ||||
this.monthEarningValueColor}); | this.monthEarningValueColor}); | ||||
TeamViewItem.fromJson(Map<String, dynamic> json) { | |||||
TeamViewItemStyle.fromJson(Map<String, dynamic> json) { | |||||
super.fromJson(json); | super.fromJson(json); | ||||
lvTextColor = json['lv_text_color']; | lvTextColor = json['lv_text_color']; | ||||
lvBgColor = json['lv_bg_color']; | lvBgColor = json['lv_bg_color']; | ||||
@@ -53,7 +53,6 @@ class _TeamPageContainerState extends State<_TeamPageContainer> { | |||||
// TabController 监听 | // TabController 监听 | ||||
void _tabChangeListener(){ | void _tabChangeListener(){ | ||||
if (!_controller.indexIsChanging) { | if (!_controller.indexIsChanging) { | ||||
Logger.log('this TabController is ${_controller?.index}'); | |||||
Provider.of<TeamPageNotifier>(context, listen: false).updateTabIndex(_controller?.index ?? 0); | Provider.of<TeamPageNotifier>(context, listen: false).updateTabIndex(_controller?.index ?? 0); | ||||
} | } | ||||
} | } | ||||
@@ -52,7 +52,7 @@ class TeamFansListItemModel { | |||||
// 获取模糊昵称 | // 获取模糊昵称 | ||||
get blurUserName => | get blurUserName => | ||||
!EmptyUtil.isEmpty(username) ? username.length > 6 ? '${username.substring(0, 3)}****${username.substring(username.length - 3, phone.length)}' : username : username; | |||||
!EmptyUtil.isEmpty(username) ? username.length > 6 ? '${username.substring(0, 3)}****${username.substring(username.length - 3, username.length)}' : username : username; | |||||
// 获取模糊微信 | // 获取模糊微信 | ||||
get blurWeChat => !EmptyUtil.isEmpty(wechat) ? wechat.length > 6 ? '${wechat.substring(0, 3)}****${wechat.substring(wechat.length - 3, wechat.length)}' : wechat : wechat; | get blurWeChat => !EmptyUtil.isEmpty(wechat) ? wechat.length > 6 ? '${wechat.substring(0, 3)}****${wechat.substring(wechat.length - 3, wechat.length)}' : wechat : wechat; | ||||
@@ -1,6 +1,5 @@ | |||||
import 'package:flutter/cupertino.dart'; | import 'package:flutter/cupertino.dart'; | ||||
import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
import 'package:zhiying_base_widget/pages/team_details_page/team_details_page.dart'; | |||||
import 'package:zhiying_base_widget/pages/team_page/model/team_style_model.dart'; | import 'package:zhiying_base_widget/pages/team_page/model/team_style_model.dart'; | ||||
import 'package:cached_network_image/cached_network_image.dart'; | import 'package:cached_network_image/cached_network_image.dart'; | ||||
import 'package:zhiying_base_widget/widgets/team/fans_list/model/team_fans_list_model.dart'; | import 'package:zhiying_base_widget/widgets/team/fans_list/model/team_fans_list_model.dart'; | ||||
@@ -12,7 +11,7 @@ import 'dart:ui' as ui show PlaceholderAlignment; | |||||
/// 我的团队 - 粉丝信息 | /// 我的团队 - 粉丝信息 | ||||
/// | /// | ||||
class TeamFansItem extends StatefulWidget { | class TeamFansItem extends StatefulWidget { | ||||
TeamStyleModel styleModel; | |||||
TeamViewItemStyle styleModel; | |||||
TeamFansListItemModel dataModel; | TeamFansListItemModel dataModel; | ||||
TeamFansItem(this.styleModel, this.dataModel); | TeamFansItem(this.styleModel, this.dataModel); | ||||
@@ -25,7 +24,7 @@ class _TeamFansItemState extends State<TeamFansItem> { | |||||
/// 跳去粉丝详情 | /// 跳去粉丝详情 | ||||
void _openFansItemDetailsPage() { | void _openFansItemDetailsPage() { | ||||
// Navigator.push(context, CupertinoPageRoute(builder: (_) => TeamDetailsPage(null))); | // Navigator.push(context, CupertinoPageRoute(builder: (_) => TeamDetailsPage(null))); | ||||
RouterUtil.route(widget?.styleModel?.teamViewItem, widget?.dataModel?.toJson(), context); | |||||
RouterUtil.route(widget?.styleModel, widget?.dataModel?.toJson(), context); | |||||
} | } | ||||
/// 复制文字 | /// 复制文字 | ||||
@@ -99,7 +98,7 @@ class _TeamFansItemState extends State<TeamFansItem> { | |||||
const SizedBox(width: 2.5), | const SizedBox(width: 2.5), | ||||
Text( | Text( | ||||
widget?.dataModel?.levelName ?? '黑钻会员', | widget?.dataModel?.levelName ?? '黑钻会员', | ||||
style: TextStyle(color: HexColor.fromHex(widget?.styleModel?.teamViewItem?.lvTextColor ?? 'FFFFFF'), fontSize: 8), | |||||
style: TextStyle(color: HexColor.fromHex(widget?.styleModel?.lvTextColor ?? 'FFFFFF'), fontSize: 8), | |||||
), | ), | ||||
], | ], | ||||
), | ), | ||||
@@ -113,10 +112,10 @@ class _TeamFansItemState extends State<TeamFansItem> { | |||||
alignment: Alignment.center, | alignment: Alignment.center, | ||||
padding: const EdgeInsets.only(left: 2.5, right: 2.5, top: 2, bottom: 2), | padding: const EdgeInsets.only(left: 2.5, right: 2.5, top: 2, bottom: 2), | ||||
margin: const EdgeInsets.only(left: 3, right: 3), | margin: const EdgeInsets.only(left: 3, right: 3), | ||||
decoration: BoxDecoration(borderRadius: BorderRadius.circular(2.5), color: HexColor.fromHex(widget?.styleModel?.teamViewItem?.directTextBgColor ?? '#FF4242')), | |||||
decoration: BoxDecoration(borderRadius: BorderRadius.circular(2.5), color: HexColor.fromHex(widget?.styleModel?.directTextBgColor ?? '#FF4242')), | |||||
child: Text( | child: Text( | ||||
widget?.dataModel?.levelType ?? '直', | widget?.dataModel?.levelType ?? '直', | ||||
style: TextStyle(color: HexColor.fromHex(widget?.styleModel?.teamViewItem?.directTextColor ?? '#FFFFFF'), fontSize: 8), | |||||
style: TextStyle(color: HexColor.fromHex(widget?.styleModel?.directTextColor ?? '#FFFFFF'), fontSize: 8), | |||||
), | ), | ||||
), | ), | ||||
), | ), | ||||
@@ -124,7 +123,7 @@ class _TeamFansItemState extends State<TeamFansItem> { | |||||
/// 会员名称 | /// 会员名称 | ||||
TextSpan( | TextSpan( | ||||
text: widget?.dataModel?.blurUserName ?? '***', | text: widget?.dataModel?.blurUserName ?? '***', | ||||
style: TextStyle(color: HexColor.fromHex(widget?.styleModel?.teamViewItem?.usernameColor ?? '#333333'), fontSize: 12, fontWeight: FontWeight.bold)) | |||||
style: TextStyle(color: HexColor.fromHex(widget?.styleModel?.usernameColor ?? '#333333'), fontSize: 12, fontWeight: FontWeight.bold)) | |||||
]), | ]), | ||||
), | ), | ||||
const SizedBox(height: 2.5), | const SizedBox(height: 2.5), | ||||
@@ -135,12 +134,12 @@ class _TeamFansItemState extends State<TeamFansItem> { | |||||
text: TextSpan(text: '', children: [ | text: TextSpan(text: '', children: [ | ||||
/// 手机号码 | /// 手机号码 | ||||
TextSpan( | TextSpan( | ||||
text: widget?.styleModel?.teamViewItem?.phooneText ?? '手机号:', | |||||
style: TextStyle(color: HexColor.fromHex(widget?.styleModel?.teamViewItem?.phoneColor ?? '#333333'), fontSize: 11)), | |||||
text: widget?.styleModel?.phooneText ?? '手机号:', | |||||
style: TextStyle(color: HexColor.fromHex(widget?.styleModel?.phoneColor ?? '#333333'), fontSize: 11)), | |||||
TextSpan( | TextSpan( | ||||
text: widget?.dataModel?.blurMobile ?? '', | text: widget?.dataModel?.blurMobile ?? '', | ||||
style: TextStyle( | style: TextStyle( | ||||
color: HexColor.fromHex(widget?.styleModel?.teamViewItem?.phoneColor ?? '#333333'), fontSize: 11, fontFamily: 'Din', package: 'zhiying_base_widget')), | |||||
color: HexColor.fromHex(widget?.styleModel?.phoneColor ?? '#333333'), fontSize: 11, fontFamily: 'Din', package: 'zhiying_base_widget')), | |||||
/// 复制按钮 | /// 复制按钮 | ||||
WidgetSpan( | WidgetSpan( | ||||
@@ -152,7 +151,7 @@ class _TeamFansItemState extends State<TeamFansItem> { | |||||
width: 11, | width: 11, | ||||
margin: const EdgeInsets.only(left: 3), | margin: const EdgeInsets.only(left: 3), | ||||
child: CachedNetworkImage( | child: CachedNetworkImage( | ||||
imageUrl: widget?.styleModel?.teamViewItem?.phoneCopyIcon ?? '', | |||||
imageUrl: widget?.styleModel?.phoneCopyIcon ?? '', | |||||
), | ), | ||||
), | ), | ||||
)) | )) | ||||
@@ -169,7 +168,7 @@ class _TeamFansItemState extends State<TeamFansItem> { | |||||
return Container( | return Container( | ||||
padding: const EdgeInsets.only(left: 9, right: 10, bottom: 6.5, top: 6.5), | padding: const EdgeInsets.only(left: 9, right: 10, bottom: 6.5, top: 6.5), | ||||
decoration: BoxDecoration( | decoration: BoxDecoration( | ||||
color: HexColor.fromHex(widget?.styleModel?.teamViewItem?.infoBarColor ?? '#F7F7F7'), | |||||
color: HexColor.fromHex(widget?.styleModel?.infoBarColor ?? '#F7F7F7'), | |||||
borderRadius: BorderRadius.circular(5), | borderRadius: BorderRadius.circular(5), | ||||
), | ), | ||||
child: Row( | child: Row( | ||||
@@ -180,16 +179,16 @@ class _TeamFansItemState extends State<TeamFansItem> { | |||||
textAlign: TextAlign.center, | textAlign: TextAlign.center, | ||||
text: TextSpan(text: '', children: [ | text: TextSpan(text: '', children: [ | ||||
TextSpan( | TextSpan( | ||||
text: widget?.styleModel?.teamViewItem?.infoBarWxText ?? '微信号:', | |||||
text: widget?.styleModel?.infoBarWxText ?? '微信号:', | |||||
style: TextStyle( | style: TextStyle( | ||||
color: HexColor.fromHex(widget?.styleModel?.teamViewItem?.infoBarWxTextColor ?? '#999999'), | |||||
color: HexColor.fromHex(widget?.styleModel?.infoBarWxTextColor ?? '#999999'), | |||||
fontWeight: FontWeight.bold, | fontWeight: FontWeight.bold, | ||||
fontSize: 11, | fontSize: 11, | ||||
)), | )), | ||||
TextSpan( | TextSpan( | ||||
text: widget?.dataModel?.blurWeChat ?? '', | text: widget?.dataModel?.blurWeChat ?? '', | ||||
style: TextStyle( | style: TextStyle( | ||||
color: HexColor.fromHex(widget?.styleModel?.teamViewItem?.infoBarWxValueColor ?? '#333333'), | |||||
color: HexColor.fromHex(widget?.styleModel?.infoBarWxValueColor ?? '#333333'), | |||||
fontWeight: FontWeight.bold, | fontWeight: FontWeight.bold, | ||||
fontSize: 11, | fontSize: 11, | ||||
fontFamily: 'Din', | fontFamily: 'Din', | ||||
@@ -205,7 +204,7 @@ class _TeamFansItemState extends State<TeamFansItem> { | |||||
padding: const EdgeInsets.only(left: 5.5), | padding: const EdgeInsets.only(left: 5.5), | ||||
width: 11 + 5.5, | width: 11 + 5.5, | ||||
child: CachedNetworkImage( | child: CachedNetworkImage( | ||||
imageUrl: widget?.styleModel?.teamViewItem?.phoneCopyIcon ?? '', | |||||
imageUrl: widget?.styleModel?.phoneCopyIcon ?? '', | |||||
)), | )), | ||||
)) | )) | ||||
]), | ]), | ||||
@@ -216,15 +215,15 @@ class _TeamFansItemState extends State<TeamFansItem> { | |||||
textAlign: TextAlign.center, | textAlign: TextAlign.center, | ||||
text: TextSpan(children: [ | text: TextSpan(children: [ | ||||
TextSpan( | TextSpan( | ||||
text: widget?.styleModel?.teamViewItem?.infoBarLastLoginText ?? '最近登陆 ', | |||||
text: widget?.styleModel?.infoBarLastLoginText ?? '最近登陆 ', | |||||
style: TextStyle( | style: TextStyle( | ||||
color: HexColor.fromHex(widget?.styleModel?.teamViewItem?.infoBarLastLoginTextColor ?? '#909090'), | |||||
color: HexColor.fromHex(widget?.styleModel?.infoBarLastLoginTextColor ?? '#909090'), | |||||
fontSize: 11, | fontSize: 11, | ||||
)), | )), | ||||
TextSpan( | TextSpan( | ||||
text: widget?.dataModel?.lastLogin ?? '', | text: widget?.dataModel?.lastLogin ?? '', | ||||
style: TextStyle( | style: TextStyle( | ||||
color: HexColor.fromHex(widget?.styleModel?.teamViewItem?.infoBarLastLoginValueColor ?? '#909090'), | |||||
color: HexColor.fromHex(widget?.styleModel?.infoBarLastLoginValueColor ?? '#909090'), | |||||
fontSize: 11, | fontSize: 11, | ||||
fontFamily: 'Din', | fontFamily: 'Din', | ||||
package: 'zhiying_base_widget')), | package: 'zhiying_base_widget')), | ||||
@@ -252,11 +251,11 @@ class _TeamFansItemState extends State<TeamFansItem> { | |||||
children: <Widget>[ | children: <Widget>[ | ||||
/// 邀请人数(人) | /// 邀请人数(人) | ||||
_getCustomWidget( | _getCustomWidget( | ||||
text: widget?.styleModel?.teamViewItem?.totalInviteText ?? '邀请人数(人)', | |||||
textColor: widget?.styleModel?.teamViewItem?.totalInviteTextColor ?? '#333333', | |||||
text: widget?.styleModel?.totalInviteText ?? '邀请人数(人)', | |||||
textColor: widget?.styleModel?.totalInviteTextColor ?? '#333333', | |||||
textSize: 10, | textSize: 10, | ||||
number: widget?.dataModel?.inviteCount ?? '0', | number: widget?.dataModel?.inviteCount ?? '0', | ||||
numberColor: widget?.styleModel?.teamViewItem?.totalInviteValueColor ?? '#FF4242', | |||||
numberColor: widget?.styleModel?.totalInviteValueColor ?? '#FF4242', | |||||
numberSize: 20, | numberSize: 20, | ||||
), | ), | ||||
const SizedBox(height: 15), | const SizedBox(height: 15), | ||||
@@ -267,21 +266,21 @@ class _TeamFansItemState extends State<TeamFansItem> { | |||||
children: <Widget>[ | children: <Widget>[ | ||||
/// 今日邀请 | /// 今日邀请 | ||||
_getCustomWidget( | _getCustomWidget( | ||||
text: widget?.styleModel?.teamViewItem?.todayInviteText ?? '今日邀请', | |||||
textColor: widget?.styleModel?.teamViewItem?.todayInviteTextColor ?? '#909090', | |||||
text: widget?.styleModel?.todayInviteText ?? '今日邀请', | |||||
textColor: widget?.styleModel?.todayInviteTextColor ?? '#909090', | |||||
textSize: 10, | textSize: 10, | ||||
number: widget?.dataModel?.todayInviteCount ?? '0', | number: widget?.dataModel?.todayInviteCount ?? '0', | ||||
numberColor: widget?.styleModel?.teamViewItem?.todayInviteValueColor ?? '#333333', | |||||
numberColor: widget?.styleModel?.todayInviteValueColor ?? '#333333', | |||||
numberSize: 15, | numberSize: 15, | ||||
), | ), | ||||
/// 本月邀请 | /// 本月邀请 | ||||
_getCustomWidget( | _getCustomWidget( | ||||
text: widget?.styleModel?.teamViewItem?.monthInviteText ?? '本月邀请', | |||||
textColor: widget?.styleModel?.teamViewItem?.monthInviteTextColor ?? '#909090', | |||||
text: widget?.styleModel?.monthInviteText ?? '本月邀请', | |||||
textColor: widget?.styleModel?.monthInviteTextColor ?? '#909090', | |||||
textSize: 10, | textSize: 10, | ||||
number: widget?.dataModel?.monthInviteCount ?? '0', | number: widget?.dataModel?.monthInviteCount ?? '0', | ||||
numberColor: widget?.styleModel?.teamViewItem?.monthInviteValueColor ?? '#333333', | |||||
numberColor: widget?.styleModel?.monthInviteValueColor ?? '#333333', | |||||
numberSize: 15, | numberSize: 15, | ||||
), | ), | ||||
], | ], | ||||
@@ -297,7 +296,7 @@ class _TeamFansItemState extends State<TeamFansItem> { | |||||
child: VerticalDivider( | child: VerticalDivider( | ||||
width: 0.5, | width: 0.5, | ||||
thickness: 0.5, | thickness: 0.5, | ||||
color: HexColor.fromHex(widget?.styleModel?.dashbordLineColor ?? '#F7F7F7'), | |||||
color: HexColor.fromHex(/*widget?.styleModel?.dashbordLineColor ??*/ '#F7F7F7'), | |||||
)), | )), | ||||
/// 右边数据 | /// 右边数据 | ||||
@@ -309,11 +308,11 @@ class _TeamFansItemState extends State<TeamFansItem> { | |||||
children: <Widget>[ | children: <Widget>[ | ||||
/// 累计收益(¥) | /// 累计收益(¥) | ||||
_getCustomWidget( | _getCustomWidget( | ||||
text: widget?.styleModel?.teamViewItem?.totalEarningText ?? '累计收益(¥)', | |||||
textColor: widget?.styleModel?.teamViewItem?.totalEarningTextColor ?? '#333333', | |||||
text: widget?.styleModel?.totalEarningText ?? '累计收益(¥)', | |||||
textColor: widget?.styleModel?.totalEarningTextColor ?? '#333333', | |||||
textSize: 10, | textSize: 10, | ||||
number: widget?.dataModel?.totalFin ?? '0.00', | number: widget?.dataModel?.totalFin ?? '0.00', | ||||
numberColor: widget?.styleModel?.teamViewItem?.totalEarningValueColor ?? '#FF4242', | |||||
numberColor: widget?.styleModel?.totalEarningValueColor ?? '#FF4242', | |||||
numberSize: 20, | numberSize: 20, | ||||
), | ), | ||||
@@ -325,21 +324,21 @@ class _TeamFansItemState extends State<TeamFansItem> { | |||||
children: <Widget>[ | children: <Widget>[ | ||||
/// 本周收益 | /// 本周收益 | ||||
_getCustomWidget( | _getCustomWidget( | ||||
text: widget?.styleModel?.teamViewItem?.weekEarningText ?? '本周收益', | |||||
textColor: widget?.styleModel?.teamViewItem?.weekEarningTextColor ?? '#909090', | |||||
text: widget?.styleModel?.weekEarningText ?? '本周收益', | |||||
textColor: widget?.styleModel?.weekEarningTextColor ?? '#909090', | |||||
textSize: 10, | textSize: 10, | ||||
number: widget?.dataModel?.weekFin ?? '0.00', | number: widget?.dataModel?.weekFin ?? '0.00', | ||||
numberColor: widget?.styleModel?.teamViewItem?.weekEarningValueColor ?? '#333333', | |||||
numberColor: widget?.styleModel?.weekEarningValueColor ?? '#333333', | |||||
numberSize: 15, | numberSize: 15, | ||||
), | ), | ||||
/// 本月邀请 | /// 本月邀请 | ||||
_getCustomWidget( | _getCustomWidget( | ||||
text: widget?.styleModel?.teamViewItem?.monthEarningText ?? '本月收益', | |||||
textColor: widget?.styleModel?.teamViewItem?.monthEarningTextColor ?? '#909090', | |||||
text: widget?.styleModel?.monthEarningText ?? '本月收益', | |||||
textColor: widget?.styleModel?.monthEarningTextColor ?? '#909090', | |||||
textSize: 10, | textSize: 10, | ||||
number: widget?.dataModel?.monthFin ?? '0.00', | number: widget?.dataModel?.monthFin ?? '0.00', | ||||
numberColor: widget?.styleModel?.teamViewItem?.monthEarningValueColor ?? '#333333', | |||||
numberColor: widget?.styleModel?.monthEarningValueColor ?? '#333333', | |||||
numberSize: 15, | numberSize: 15, | ||||
), | ), | ||||
], | ], | ||||
@@ -56,14 +56,14 @@ class __TeamFansWidgetContainerState extends State<_TeamFansWidgetContainer> { | |||||
/// 上拉更多 | /// 上拉更多 | ||||
void _onLoading() async { | void _onLoading() async { | ||||
// if(widget.tabCurrentIndex == tabSelectIndex ) { | // if(widget.tabCurrentIndex == tabSelectIndex ) { | ||||
BlocProvider.of<TeamListFansBloc>(context).add(TeamListFansOnLoadEevnt()); | |||||
BlocProvider.of<TeamListFansBloc>(context).add(TeamListFansOnLoadEevnt()); | |||||
// } | // } | ||||
} | } | ||||
/// 下拉刷新 | /// 下拉刷新 | ||||
void _onRefresh() async { | void _onRefresh() async { | ||||
// if(widget.tabCurrentIndex == tabSelectIndex || _refreshController.initialRefresh) { | // if(widget.tabCurrentIndex == tabSelectIndex || _refreshController.initialRefresh) { | ||||
BlocProvider.of<TeamListFansBloc>(context).add(TeamListFansOnRefreshEvent()); | |||||
BlocProvider.of<TeamListFansBloc>(context).add(TeamListFansOnRefreshEvent()); | |||||
// } | // } | ||||
} | } | ||||
@@ -79,7 +79,7 @@ class __TeamFansWidgetContainerState extends State<_TeamFansWidgetContainer> { | |||||
if (null != notifier) { | if (null != notifier) { | ||||
tabSelectIndex = notifier?.getTabIndex() ?? 0; | tabSelectIndex = notifier?.getTabIndex() ?? 0; | ||||
Map<String, String> reqArgs = notifier?.getReqArgs() ?? null; | Map<String, String> reqArgs = notifier?.getReqArgs() ?? null; | ||||
if(widget.tabCurrentIndex == tabSelectIndex && !EmptyUtil.isEmpty(reqArgs)) { | |||||
if (widget.tabCurrentIndex == tabSelectIndex && !EmptyUtil.isEmpty(reqArgs)) { | |||||
Logger.log('didChangeDependencies, currentTabIndex = ${widget?.tabCurrentIndex}, tabSelectIndex = $tabSelectIndex , reqArgs = ${reqArgs?.toString()}'); | Logger.log('didChangeDependencies, currentTabIndex = ${widget?.tabCurrentIndex}, tabSelectIndex = $tabSelectIndex , reqArgs = ${reqArgs?.toString()}'); | ||||
// _refreshController.refreshToIdle(); | // _refreshController.refreshToIdle(); | ||||
BlocProvider.of<TeamListFansBloc>(context).add(TeamListFansFilterEvent(args: reqArgs)); | BlocProvider.of<TeamListFansBloc>(context).add(TeamListFansFilterEvent(args: reqArgs)); | ||||
@@ -172,7 +172,7 @@ class __TeamFansWidgetContainerState extends State<_TeamFansWidgetContainer> { | |||||
return TeamFansNumberItemWidget(widget?.styleModel, state?.model); | return TeamFansNumberItemWidget(widget?.styleModel, state?.model); | ||||
} else { | } else { | ||||
TeamFansListItemModel itemModel = state.model.fans[index - 1]; | TeamFansListItemModel itemModel = state.model.fans[index - 1]; | ||||
return TeamFansItem(widget?.styleModel, itemModel); | |||||
return TeamFansItem(widget?.styleModel?.teamViewItem, itemModel); | |||||
} | } | ||||
}, | }, | ||||
itemCount: lenght + 1, | itemCount: lenght + 1, | ||||
@@ -1,83 +1,101 @@ | |||||
import 'package:zhiying_base_widget/pages/team_details_page/model/team_details_data_model.dart'; | |||||
import 'package:zhiying_base_widget/pages/team_details_page/model/team_details_style_model.dart'; | |||||
import 'package:zhiying_comm/zhiying_comm.dart'; | import 'package:zhiying_comm/zhiying_comm.dart'; | ||||
import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
class TeamDetailsMonthDataWidget extends StatelessWidget { | class TeamDetailsMonthDataWidget extends StatelessWidget { | ||||
TeamDetailsStyleModelDashbordItem styleModel; | |||||
TeamDetailsDashBoardItem dataModel; | |||||
TeamDetailsMonthDataWidget(this.styleModel, this.dataModel); | |||||
@override | @override | ||||
Widget build(BuildContext context) { | Widget build(BuildContext context) { | ||||
Logger.log('dataModel = ${dataModel?.toJson()?.toString()}'); | |||||
return _getContentWidget(); | return _getContentWidget(); | ||||
} | } | ||||
/// content | /// content | ||||
Widget _getContentWidget() { | Widget _getContentWidget() { | ||||
return Container( | return Container( | ||||
decoration: BoxDecoration( | decoration: BoxDecoration( | ||||
color: HexColor.fromHex('#FFFFFF'), | |||||
color: HexColor.fromHex(styleModel?.bg_color ?? '#FFFFFF'), | |||||
borderRadius: BorderRadius.circular(10), | borderRadius: BorderRadius.circular(10), | ||||
), | ), | ||||
margin: const EdgeInsets.only(left: 12.5, right: 12.5, top: 12.5), | margin: const EdgeInsets.only(left: 12.5, right: 12.5, top: 12.5), | ||||
padding: const EdgeInsets.only(bottom: 10), | padding: const EdgeInsets.only(bottom: 10), | ||||
child: Column( | |||||
children: <Widget>[ | |||||
Transform.translate( | |||||
offset: Offset(0, -5), | |||||
child: Container(height: 30, width: 82, color: Colors.red), | |||||
), | |||||
const SizedBox(height: 6), | |||||
Row( | |||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly, | |||||
children: <Widget>[ | |||||
/// 今日贡献 | |||||
_getLeftValueWidget(), | |||||
/// 分割线 | |||||
Container( | |||||
width: 0.5, | |||||
height: 18.5, | |||||
child: VerticalDivider(width: 0.5, thickness: 0.5, color: HexColor.fromHex('#F2F2F2')) | |||||
), | |||||
/// 贡献收入 | |||||
_getRightValueWidget(), | |||||
], | |||||
child: Column(children: <Widget>[ | |||||
Transform.translate( | |||||
offset: Offset(0, -5), | |||||
child: Container( | |||||
alignment: Alignment.center, | |||||
height: 30, | |||||
width: 82, | |||||
padding: const EdgeInsets.only(bottom: 8), | |||||
decoration: BoxDecoration(image: DecorationImage(image: CachedNetworkImageProvider(styleModel?.title_bg_img ?? ''))), | |||||
child: Text( | |||||
styleModel?.title ?? '', | |||||
style: TextStyle(color: HexColor.fromHex(styleModel?.title_color ?? '#FFFFFF'), fontSize: 13), | |||||
), | ), | ||||
] | |||||
), | |||||
), | |||||
), | |||||
const SizedBox(height: 6), | |||||
Row( | |||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly, | |||||
children: _buildDataWidgets(), | |||||
), | |||||
]), | |||||
); | ); | ||||
} | } | ||||
/// 左边 | |||||
Widget _getLeftValueWidget() { | |||||
return _getCustomWidget(text: '自购订单(个)', | |||||
textColor: '#999999', | |||||
textSize: 11, | |||||
number: '158.58', | |||||
numberColor: '#333333', | |||||
numberSize: 17, | |||||
icon: 'sss'); | |||||
/// 分割线 | |||||
Widget _buildVerticalDividerWidget() { | |||||
return Container(width: 0.5, height: 18.5, child: VerticalDivider(width: 0.5, thickness: 0.5, color: HexColor.fromHex('#F2F2F2'))); | |||||
} | } | ||||
/// 右边 | |||||
Widget _getRightValueWidget() { | |||||
return _getCustomWidget(text: '预估收益(元)', | |||||
textColor: '#999999', | |||||
textSize: 11, | |||||
number: '158.58', | |||||
numberColor: '#333333', | |||||
numberSize: 17, | |||||
icon: 'sss'); | |||||
/// 构建数据 | |||||
List<Widget> _buildDataWidgets() { | |||||
List<Widget> widgets = []; | |||||
int length = styleModel?.texts?.length ?? 0; | |||||
int dataLength = dataModel?.data_list?.length ?? 0; | |||||
if (length > 0) { | |||||
for (int i = 0; i < length; i++) { | |||||
String element = styleModel.texts[i]; | |||||
String value = (dataLength > 0 && dataLength == length) ? dataModel.data_list[i] : '0.0'; | |||||
widgets.add(_getValueWidget(element, value)); | |||||
widgets.add(_buildVerticalDividerWidget()); | |||||
} | |||||
// styleModel.texts.forEach((element) { | |||||
// widgets.add(_getValueWidget(element, '0.0')); | |||||
// widgets.add(_buildVerticalDividerWidget()); | |||||
// }); | |||||
widgets.removeLast(); //去除最后一个分割线 | |||||
} | |||||
return widgets; | |||||
} | |||||
/// 数据 | |||||
Widget _getValueWidget(String text, String value) { | |||||
return _getCustomWidget( | |||||
text: text ?? '', | |||||
textColor: styleModel?.text_color ?? '#999999', | |||||
textSize: 11, | |||||
number: value ?? '0.0', | |||||
numberColor: styleModel?.value_color ?? '#333333', | |||||
numberSize: 17, | |||||
icon: styleModel?.text_icon, | |||||
); | |||||
} | } | ||||
/// 自定义Widget | /// 自定义Widget | ||||
Widget _getCustomWidget({String text, String textColor, double textSize, String number, String numberColor, double numberSize, String icon}) { | Widget _getCustomWidget({String text, String textColor, double textSize, String number, String numberColor, double numberSize, String icon}) { | ||||
return Column( | return Column( | ||||
children: <Widget>[ | children: <Widget>[ | ||||
/// number | /// number | ||||
Text(number, style: TextStyle(color: HexColor.fromHex(numberColor), fontSize: numberSize, fontWeight: FontWeight.bold)), | |||||
Text( | |||||
number, | |||||
style: TextStyle(color: HexColor.fromHex(numberColor), fontSize: numberSize, fontWeight: FontWeight.bold, fontFamily: 'Din', package: 'zhiying_base_widget'), | |||||
), | |||||
/// text | /// text | ||||
Row( | Row( | ||||
@@ -85,7 +103,16 @@ class TeamDetailsMonthDataWidget extends StatelessWidget { | |||||
Text(text, style: TextStyle(color: HexColor.fromHex(textColor), fontSize: textSize)), | Text(text, style: TextStyle(color: HexColor.fromHex(textColor), fontSize: textSize)), | ||||
/// icon | /// icon | ||||
Visibility(visible: !EmptyUtil.isEmpty(icon), child: Container(width: 11, height: 11, color: Colors.red)) | |||||
Visibility( | |||||
visible: !EmptyUtil.isEmpty(icon), | |||||
child: Container( | |||||
margin: const EdgeInsets.only(left: 3), | |||||
width: 11, | |||||
height: 11, | |||||
child: CachedNetworkImage( | |||||
imageUrl: icon ?? '', | |||||
), | |||||
)) | |||||
], | ], | ||||
) | ) | ||||
], | ], | ||||
@@ -1,8 +1,21 @@ | |||||
import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
import 'package:zhiying_base_widget/pages/team_details_page/model/team_details_style_model.dart'; | |||||
import 'package:zhiying_base_widget/widgets/team/fans_list/model/team_fans_list_model.dart'; | |||||
import 'package:zhiying_comm/zhiying_comm.dart'; | import 'package:zhiying_comm/zhiying_comm.dart'; | ||||
import 'dart:ui' as ui show PlaceholderAlignment; | |||||
import 'package:fluttertoast/fluttertoast.dart'; | |||||
import 'dart:ui' as ui show PlaceholderAlignment; | |||||
class TeamDetailsReferrerWidget extends StatelessWidget { | class TeamDetailsReferrerWidget extends StatelessWidget { | ||||
TeamDetailsStyleModelHeaderReferrer styleModel; | |||||
TeamFansListItemModel dataModel; | |||||
TeamDetailsReferrerWidget(this.styleModel, this.dataModel); | |||||
/// 复制文字 | |||||
void _copyText() { | |||||
Fluttertoast.showToast(msg: '复制成功~'); | |||||
} | |||||
@override | @override | ||||
Widget build(BuildContext context) { | Widget build(BuildContext context) { | ||||
return Container( | return Container( | ||||
@@ -15,7 +28,6 @@ class TeamDetailsReferrerWidget extends StatelessWidget { | |||||
padding: const EdgeInsets.only(left: 9.5, right: 20, bottom: 10), | padding: const EdgeInsets.only(left: 9.5, right: 20, bottom: 10), | ||||
child: Column( | child: Column( | ||||
children: <Widget>[ | children: <Widget>[ | ||||
/// 推荐人图片 | /// 推荐人图片 | ||||
_getLeftTopWidget(), | _getLeftTopWidget(), | ||||
@@ -33,15 +45,22 @@ class TeamDetailsReferrerWidget extends StatelessWidget { | |||||
} | } | ||||
/// 推荐人左上角Icon | /// 推荐人左上角Icon | ||||
Widget _getLeftTopWidget(){ | |||||
Widget _getLeftTopWidget() { | |||||
return Align( | return Align( | ||||
alignment: Alignment.topLeft, | alignment: Alignment.topLeft, | ||||
child: Transform.translate( | child: Transform.translate( | ||||
offset: Offset(0, -5), | offset: Offset(0, -5), | ||||
child: Container( | child: Container( | ||||
width: 80, | |||||
height: 23.5, | |||||
color: Colors.red, | |||||
// width: 80, | |||||
// height: 23.5, | |||||
padding: const EdgeInsets.only(left: 8, right: 8, top: 4, bottom: 4.5), | |||||
decoration: BoxDecoration( | |||||
borderRadius: BorderRadius.circular(4), | |||||
gradient: LinearGradient(begin: Alignment.centerLeft, end: Alignment.centerRight, colors: [ | |||||
HexColor.fromHex(styleModel?.title_bg_color ?? '#FF5E5E'), | |||||
HexColor.fromHex(styleModel?.title_bg_color_t ?? '#FF5252'), | |||||
])), | |||||
child: Text(styleModel?.title ?? 'TA的推荐人', style: TextStyle(color: HexColor.fromHex(styleModel?.title_color ?? '#FFFFFF'), fontSize: 11)), | |||||
), | ), | ||||
), | ), | ||||
); | ); | ||||
@@ -52,7 +71,13 @@ class TeamDetailsReferrerWidget extends StatelessWidget { | |||||
return Row( | return Row( | ||||
children: <Widget>[ | children: <Widget>[ | ||||
/// 头像 | /// 头像 | ||||
Container(width: 50, height: 50, color: Colors.red), | |||||
Container( | |||||
width: 50, | |||||
height: 50, | |||||
child: CachedNetworkImage( | |||||
imageUrl: dataModel?.avatar ?? '', | |||||
), | |||||
), | |||||
const SizedBox(width: 10), | const SizedBox(width: 10), | ||||
/// 信息 | /// 信息 | ||||
@@ -63,15 +88,41 @@ class TeamDetailsReferrerWidget extends StatelessWidget { | |||||
/// 会员等级 关系 昵称 | /// 会员等级 关系 昵称 | ||||
RichText( | RichText( | ||||
textAlign: TextAlign.center, | textAlign: TextAlign.center, | ||||
text: TextSpan(text: '', children: [ | |||||
text: TextSpan(children: [ | |||||
/// 等级 | /// 等级 | ||||
WidgetSpan(alignment: ui.PlaceholderAlignment.middle,child: Container(width: 37, height: 13, color: Colors.red)), | |||||
WidgetSpan( | |||||
alignment: ui.PlaceholderAlignment.middle, | |||||
child: Container( | |||||
margin: const EdgeInsets.only(right: 4), | |||||
padding: const EdgeInsets.only(left: 3, right: 2, top: 2, bottom: 2), | |||||
decoration: BoxDecoration( | |||||
color: HexColor.fromHex(dataModel?.levelBgColor), | |||||
borderRadius: BorderRadius.circular(2.5), | |||||
), | |||||
alignment: Alignment.center, | |||||
child: Row( | |||||
children: <Widget>[ | |||||
CachedNetworkImage( | |||||
imageUrl: dataModel?.levelIcon ?? '', | |||||
width: 11, | |||||
), | |||||
const SizedBox(width: 2.5), | |||||
Text( | |||||
dataModel?.levelName ?? '黑钻会员', | |||||
style: TextStyle(color: HexColor.fromHex(styleModel?.lv_text_color ?? 'FFFFFF'), fontSize: 8), | |||||
), | |||||
], | |||||
), | |||||
), | |||||
), | |||||
/// 会员关系 | /// 会员关系 | ||||
WidgetSpan(alignment: ui.PlaceholderAlignment.middle,child: Container(width: 13, height: 13, color: Colors.red, margin: const EdgeInsets.only(left: 3, right: 3))), | |||||
// WidgetSpan(alignment: ui.PlaceholderAlignment.middle, child: Container(width: 13, height: 13, color: Colors.red, margin: const EdgeInsets.only(left: 3, right: 3))), | |||||
/// 会员名称 | /// 会员名称 | ||||
TextSpan(text: '温***哥', style: TextStyle(color: HexColor.fromHex('#333333'), fontSize: 12, fontWeight: FontWeight.bold)) | |||||
TextSpan( | |||||
text: dataModel?.blurUserName ?? '', | |||||
style: TextStyle(color: HexColor.fromHex(styleModel?.username_color ?? '#333333'), fontSize: 12, fontWeight: FontWeight.bold)) | |||||
]), | ]), | ||||
), | ), | ||||
const SizedBox(height: 2.5), | const SizedBox(height: 2.5), | ||||
@@ -79,13 +130,16 @@ class TeamDetailsReferrerWidget extends StatelessWidget { | |||||
/// 手机号码 | /// 手机号码 | ||||
RichText( | RichText( | ||||
textAlign: TextAlign.center, | textAlign: TextAlign.center, | ||||
text: TextSpan(text: '', children: [ | |||||
text: TextSpan(children: [ | |||||
/// 手机号码 | /// 手机号码 | ||||
TextSpan(text: '手机号:', style: TextStyle(color: HexColor.fromHex('#333333'), fontSize: 11)), | |||||
TextSpan(text: '124****6124', style: TextStyle(color: HexColor.fromHex('#333333'), fontSize: 11, fontFamily: 'Din', package: 'zhiying_base_widget')), | |||||
TextSpan(text: styleModel?.phone_text ?? '手机号:', style: TextStyle(color: HexColor.fromHex(styleModel?.phone_color ?? '#333333'), fontSize: 11)), | |||||
TextSpan( | |||||
text: dataModel?.blurMobile ?? '', | |||||
style: TextStyle(color: HexColor.fromHex(styleModel?.phone_color ?? '#333333'), fontSize: 11, fontFamily: 'Din', package: 'zhiying_base_widget')), | |||||
/// 复制按钮 | /// 复制按钮 | ||||
WidgetSpan(alignment: ui.PlaceholderAlignment.middle,child: Container(width: 11, height: 11, color: Colors.red, margin: const EdgeInsets.only(left: 3))) | |||||
_getCopyWidget(), | |||||
// _getCopyWidget(), | |||||
]), | ]), | ||||
), | ), | ||||
], | ], | ||||
@@ -94,12 +148,29 @@ class TeamDetailsReferrerWidget extends StatelessWidget { | |||||
); | ); | ||||
} | } | ||||
/// 复制按钮 | |||||
InlineSpan _getCopyWidget() { | |||||
return WidgetSpan( | |||||
alignment: ui.PlaceholderAlignment.middle, | |||||
child: GestureDetector( | |||||
behavior: HitTestBehavior.opaque, | |||||
onTap: () => _copyText(), | |||||
child: Container( | |||||
width: 15, | |||||
padding: const EdgeInsets.only(left: 3), | |||||
child: CachedNetworkImage( | |||||
imageUrl: styleModel?.copy_btn_icon ?? '', | |||||
), | |||||
), | |||||
)); | |||||
} | |||||
/// 微信号码信息 | /// 微信号码信息 | ||||
Widget _getWXNumberInfoWidget() { | Widget _getWXNumberInfoWidget() { | ||||
return Container( | return Container( | ||||
padding: const EdgeInsets.only(left: 9, right: 10, bottom: 6.5, top: 6.5), | padding: const EdgeInsets.only(left: 9, right: 10, bottom: 6.5, top: 6.5), | ||||
decoration: BoxDecoration( | decoration: BoxDecoration( | ||||
color: HexColor.fromHex('#F7F7F7'), | |||||
color: HexColor.fromHex(styleModel?.bar_color ?? '#F7F7F7'), | |||||
borderRadius: BorderRadius.circular(5), | borderRadius: BorderRadius.circular(5), | ||||
), | ), | ||||
child: Row( | child: Row( | ||||
@@ -108,17 +179,33 @@ class TeamDetailsReferrerWidget extends StatelessWidget { | |||||
/// 微信号码 | /// 微信号码 | ||||
RichText( | RichText( | ||||
textAlign: TextAlign.center, | textAlign: TextAlign.center, | ||||
text: TextSpan(text: '', children: [ | |||||
TextSpan(text: '微信号:', style: TextStyle(color: HexColor.fromHex('#999999'), fontSize: 11, fontWeight: FontWeight.bold)), | |||||
text: TextSpan(children: [ | |||||
TextSpan( | |||||
text: styleModel?.wx_text ?? '微信号:', style: TextStyle(color: HexColor.fromHex(styleModel?.wx_color ?? '#999999'), fontSize: 11, fontWeight: FontWeight.bold)), | |||||
TextSpan( | TextSpan( | ||||
text: '54A78', | |||||
style: TextStyle(fontWeight: FontWeight.bold, color: HexColor.fromHex('#333333'), fontSize: 11, fontFamily: 'Din', package: 'zhiying_base_widget')), | |||||
WidgetSpan(alignment: ui.PlaceholderAlignment.middle,child: Container(margin: const EdgeInsets.only(left: 5.5), color: Colors.red, width: 11, height: 11)) | |||||
text: dataModel?.blurWeChat ?? '', | |||||
style: TextStyle( | |||||
fontWeight: FontWeight.bold, | |||||
color: HexColor.fromHex(styleModel?.wx_value_color ?? '#333333'), | |||||
fontSize: 11, | |||||
fontFamily: 'Din', | |||||
package: 'zhiying_base_widget')), | |||||
_getCopyWidget(), | |||||
]), | ]), | ||||
), | ), | ||||
/// 最近登陆时间 | /// 最近登陆时间 | ||||
Text('最近登陆 2019-06-28', style: TextStyle(color: HexColor.fromHex('#909090'), fontSize: 11, fontFamily: 'Din', package: 'zhiying_base_widget')) | |||||
RichText( | |||||
textAlign: TextAlign.center, | |||||
text: TextSpan(children: [ | |||||
TextSpan( | |||||
text: styleModel?.last_login_text ?? '最近登陆', | |||||
style: TextStyle(color: HexColor.fromHex(styleModel?.last_login_text_color ?? '#909090'), fontSize: 11, fontFamily: 'Din', package: 'zhiying_base_widget')), | |||||
TextSpan( | |||||
text: dataModel?.lastLogin ?? '', | |||||
style: TextStyle(color: HexColor.fromHex(styleModel?.last_login_value_color ?? '#909090'), fontSize: 11, fontFamily: 'Din', package: 'zhiying_base_widget')), | |||||
]), | |||||
), | |||||
], | ], | ||||
), | ), | ||||
); | ); | ||||