@@ -67,6 +67,11 @@ class _MainPageContainerState extends State<_MainPageContainer> | |||||
// _refreshController.loadComplete(); | // _refreshController.loadComplete(); | ||||
} | } | ||||
void _onRefresh() async{ | |||||
await Duration(microseconds: 3); | |||||
_refreshController.refreshCompleted(); | |||||
} | |||||
@override | @override | ||||
void didChangeAppLifecycleState(AppLifecycleState state) async { | void didChangeAppLifecycleState(AppLifecycleState state) async { | ||||
///智能粘贴板 | ///智能粘贴板 | ||||
@@ -77,6 +82,7 @@ class _MainPageContainerState extends State<_MainPageContainer> | |||||
@override | @override | ||||
void dispose() { | void dispose() { | ||||
_controller.dispose(); | _controller.dispose(); | ||||
_refreshController.dispose(); | |||||
WidgetsBinding.instance.removeObserver(this); | WidgetsBinding.instance.removeObserver(this); | ||||
super.dispose(); | super.dispose(); | ||||
} | } | ||||
@@ -123,10 +129,11 @@ class _MainPageContainerState extends State<_MainPageContainer> | |||||
context: context, | context: context, | ||||
child: SmartRefresher( | child: SmartRefresher( | ||||
enablePullDown: true, | enablePullDown: true, | ||||
enablePullUp: false, | |||||
enablePullUp: true, | |||||
header: WaterDropHeader(), | header: WaterDropHeader(), | ||||
controller: _refreshController, | controller: _refreshController, | ||||
onLoading: _onLoading, | onLoading: _onLoading, | ||||
onRefresh: _onRefresh, | |||||
child: Container( | child: Container( | ||||
width: double.infinity, | width: double.infinity, | ||||
child: Stack( | child: Stack( | ||||
@@ -140,7 +140,7 @@ class _SearchResultItemPageContianerState extends State<SearchResultItemPageCont | |||||
enablePullDown: true, | enablePullDown: true, | ||||
enablePullUp: true, | enablePullUp: true, | ||||
// footer: ClassicFooter(), | // footer: ClassicFooter(), | ||||
// header: WaterDropHeader(), | |||||
// header: MaterialClassicHeader(), | |||||
controller: _refreshController, | controller: _refreshController, | ||||
child: CustomScrollView( | child: CustomScrollView( | ||||
controller: _controller, | controller: _controller, | ||||
@@ -0,0 +1,21 @@ | |||||
import 'dart:async'; | |||||
import 'package:bloc/bloc.dart'; | |||||
import 'package:equatable/equatable.dart'; | |||||
part 'team_details_event.dart'; | |||||
part 'team_details_state.dart'; | |||||
class TeamDetailsBloc extends Bloc<TeamDetailsEvent, TeamDetailsState> { | |||||
// TeamDetailsBloc() : super(TeamDetailsInitial()); | |||||
@override | |||||
Stream<TeamDetailsState> mapEventToState( | |||||
TeamDetailsEvent event, | |||||
) async* { | |||||
} | |||||
@override | |||||
TeamDetailsState get initialState => TeamDetailsInitial(); | |||||
} |
@@ -0,0 +1,5 @@ | |||||
part of 'team_details_bloc.dart'; | |||||
abstract class TeamDetailsEvent extends Equatable { | |||||
const TeamDetailsEvent(); | |||||
} |
@@ -0,0 +1,4 @@ | |||||
class TeamDetailsRepository{ | |||||
} |
@@ -0,0 +1,10 @@ | |||||
part of 'team_details_bloc.dart'; | |||||
abstract class TeamDetailsState extends Equatable { | |||||
const TeamDetailsState(); | |||||
} | |||||
class TeamDetailsInitial extends TeamDetailsState { | |||||
@override | |||||
List<Object> get props => []; | |||||
} |
@@ -0,0 +1,36 @@ | |||||
import 'package:flutter/material.dart'; | |||||
import 'package:zhiying_comm/zhiying_comm.dart' | |||||
''; | |||||
/// | |||||
/// 我的团队 - 用户详情 | |||||
/// | |||||
class TeamDetailsPage extends StatefulWidget { | |||||
@override | |||||
_TeamDetailsPageState createState() => _TeamDetailsPageState(); | |||||
} | |||||
class _TeamDetailsPageState extends State<TeamDetailsPage> { | |||||
@override | |||||
Widget build(BuildContext context) { | |||||
return _getMainWidget(); | |||||
} | |||||
/// 主视图 | |||||
Widget _getMainWidget(){ | |||||
return Scaffold( | |||||
backgroundColor: HexColor.fromHex('#F9F9F9'), | |||||
body: Container(), | |||||
); | |||||
} | |||||
/// 推荐人 | |||||
/// 推荐人的信息 | |||||
/// 本月数据 & 上个月数据 | |||||
} |
@@ -0,0 +1,25 @@ | |||||
import 'dart:async'; | |||||
import 'package:bloc/bloc.dart'; | |||||
import 'package:equatable/equatable.dart'; | |||||
part 'team_event.dart'; | |||||
part 'team_state.dart'; | |||||
class TeamBloc extends Bloc<TeamEvent, TeamState> { | |||||
// TeamBloc() : super(TeamInitial()); | |||||
@override | |||||
TeamState get initialState => TeamInitial(); | |||||
@override | |||||
Stream<TeamState> mapEventToState( | |||||
TeamEvent event, | |||||
) async* { | |||||
} | |||||
} |
@@ -0,0 +1,5 @@ | |||||
part of 'team_bloc.dart'; | |||||
abstract class TeamEvent extends Equatable { | |||||
const TeamEvent(); | |||||
} |
@@ -0,0 +1,4 @@ | |||||
class TeamRepository{ | |||||
} |
@@ -0,0 +1,10 @@ | |||||
part of 'team_bloc.dart'; | |||||
abstract class TeamState extends Equatable { | |||||
const TeamState(); | |||||
} | |||||
class TeamInitial extends TeamState { | |||||
@override | |||||
List<Object> get props => []; | |||||
} |
@@ -0,0 +1,249 @@ | |||||
import 'package:flutter/cupertino.dart'; | |||||
import 'package:flutter/material.dart'; | |||||
import 'package:tab_indicator_styler/tab_indicator_styler.dart'; | |||||
import 'package:zhiying_base_widget/widgets/team/data/team_data_widet.dart'; | |||||
import 'package:zhiying_base_widget/widgets/team/recommend/team_recommend_widget.dart'; | |||||
import 'package:zhiying_comm/util/custom_sliver_persistent_header_delegate.dart'; | |||||
import 'package:zhiying_comm/zhiying_comm.dart'; | |||||
import 'dart:ui'; | |||||
/// | |||||
/// 我的团队 | |||||
/// | |||||
class TeamPage extends StatefulWidget { | |||||
@override | |||||
_TeamPageState createState() => _TeamPageState(); | |||||
} | |||||
class _TeamPageState extends State<TeamPage> { | |||||
@override | |||||
Widget build(BuildContext context) { | |||||
return _getMainWidget(); | |||||
} | |||||
var tabTitle = [ | |||||
'全部会员', | |||||
'青铜会员', | |||||
'白银会员', | |||||
'黄金会员', | |||||
]; | |||||
TabController _controller; | |||||
@override | |||||
void initState() { | |||||
_controller = TabController(length: tabTitle.length, vsync: ScrollableState()); | |||||
super.initState(); | |||||
} | |||||
@override | |||||
void dispose() { | |||||
_controller?.dispose(); | |||||
super.dispose(); | |||||
} | |||||
/// 主体视图 | |||||
Widget _getMainWidget() { | |||||
return Scaffold( | |||||
backgroundColor: HexColor.fromHex('#F9F9F9'), | |||||
body: NestedScrollView( | |||||
headerSliverBuilder: (context, bool) { | |||||
return [ | |||||
/// 头部Bar | |||||
SliverAppBar( | |||||
// expandedHeight: 200.0, | |||||
leading: IconButton( | |||||
icon: Icon( | |||||
Icons.arrow_back_ios, | |||||
size: 22, | |||||
color: HexColor.fromHex('#333333'), | |||||
), | |||||
onPressed: () => Navigator.maybePop(context), | |||||
), | |||||
backgroundColor: Colors.white, | |||||
floating: true, | |||||
pinned: true, | |||||
title: Text( | |||||
'我的团队', | |||||
style: TextStyle(color: HexColor.fromHex('#333333'), fontWeight: FontWeight.bold, fontSize: 18), | |||||
), | |||||
centerTitle: true, | |||||
elevation: 0, | |||||
), | |||||
/// 我的推荐人 | |||||
SliverToBoxAdapter( | |||||
child: TeamRecommendWidget(), | |||||
), | |||||
/// 数据 | |||||
SliverToBoxAdapter( | |||||
child: TeamDataWidget(), | |||||
), | |||||
SliverToBoxAdapter(child: SizedBox(height: 8)), | |||||
/// 输入框 | |||||
SliverPersistentHeader( | |||||
delegate: CustomSliverPersistentHeaderDelegate( | |||||
min: 34, | |||||
max: 34, | |||||
child: Container( | |||||
width: double.infinity, | |||||
height: double.infinity, | |||||
padding: const EdgeInsets.only(top: 10, left: 12.5, right: 12.5), | |||||
color: Colors.white, | |||||
child: Row( | |||||
children: <Widget>[ | |||||
/// 输入框 | |||||
Expanded( | |||||
child: Container( | |||||
height: 24, | |||||
decoration: BoxDecoration( | |||||
borderRadius: BorderRadius.circular(30), | |||||
color: HexColor.fromHex('#F7F7F7'), | |||||
), | |||||
padding: const EdgeInsets.only(top: 5, bottom: 4.5, left: 7.5, right: 7.5), | |||||
width: double.infinity, | |||||
child: Row( | |||||
children: <Widget>[ | |||||
Container(width: 11.5, height: 11.5, color: Colors.red,), | |||||
Expanded(child: Container( | |||||
color: Colors.transparent, | |||||
child: TextField( | |||||
style: TextStyle(fontSize: 11 , color: HexColor.fromHex('#000000'), textBaseline: TextBaseline.alphabetic), | |||||
decoration: InputDecoration( | |||||
focusedBorder: InputBorder.none, | |||||
border: InputBorder.none, | |||||
focusedErrorBorder: InputBorder.none, | |||||
errorBorder: InputBorder.none, | |||||
disabledBorder: InputBorder.none, | |||||
enabledBorder: InputBorder.none, | |||||
filled: true, | |||||
isDense: true, | |||||
contentPadding: const EdgeInsets.only(left: 6, bottom: 0, top: 0, right: 0), | |||||
fillColor: Colors.transparent, | |||||
hintStyle: TextStyle(fontSize: 11 , color: HexColor.fromHex('#999999'), textBaseline: TextBaseline.alphabetic), | |||||
hintText: '输入需搜索的手机号/昵称', | |||||
), | |||||
), | |||||
),), | |||||
Container(width: 15, height: 15, color: Colors.red,) | |||||
], | |||||
), | |||||
), | |||||
), | |||||
const SizedBox(width: 8), | |||||
/// 确定按钮 | |||||
Container( | |||||
decoration: BoxDecoration(borderRadius: BorderRadius.circular(30), color: HexColor.fromHex('#FF4242')), | |||||
padding: const EdgeInsets.only(left: 15, right: 15, bottom: 6.5, top: 6.5), | |||||
child: Text('搜索', style: TextStyle(color: HexColor.fromHex('#FFFFFF'), fontSize: 11),), | |||||
) | |||||
], | |||||
), | |||||
), | |||||
), | |||||
pinned: true, | |||||
), | |||||
/// 悬停TabBar | |||||
SliverPersistentHeader( | |||||
delegate: new _SliverTabBarDelegate( | |||||
TabBar( | |||||
isScrollable: false, | |||||
labelStyle: TextStyle(fontWeight: FontWeight.bold, fontSize: 13), | |||||
unselectedLabelStyle: TextStyle(fontSize: 13), | |||||
indicator: MaterialIndicator( | |||||
height: 2, | |||||
topLeftRadius: 8, | |||||
topRightRadius: 8, | |||||
bottomLeftRadius: 8, | |||||
bottomRightRadius: 8, | |||||
color: HexColor.fromHex('#F94B47'), | |||||
horizontalPadding: 30, | |||||
), | |||||
controller: _controller, | |||||
tabs: tabTitle.map((f) => Tab(text: f)).toList(), | |||||
indicatorColor: Colors.red, | |||||
unselectedLabelColor: HexColor.fromHex('#999999'), | |||||
labelColor: HexColor.fromHex('#000000'), | |||||
), | |||||
), | |||||
pinned: true, | |||||
), | |||||
/// 筛选条件 | |||||
SliverPersistentHeader( | |||||
delegate: CustomSliverPersistentHeaderDelegate( | |||||
max: 32.5, | |||||
min: 32.5, | |||||
child: Container( | |||||
height: double.infinity, | |||||
width: double.infinity, | |||||
color: HexColor.fromHex('#FFFFFF'), | |||||
child: Row( | |||||
mainAxisAlignment: MainAxisAlignment.spaceAround, | |||||
children: <Widget>[ | |||||
Text('邀请人数', style: TextStyle(fontSize: 12, color: HexColor.fromHex('#999999')),), | |||||
Text('邀请人数', style: TextStyle(fontSize: 12, color: HexColor.fromHex('#999999')),), | |||||
Text('邀请人数', style: TextStyle(fontSize: 12, color: HexColor.fromHex('#999999')),), | |||||
Text('邀请人数', style: TextStyle(fontSize: 12, color: HexColor.fromHex('#999999')),), | |||||
], | |||||
), | |||||
)), | |||||
pinned: true, | |||||
), | |||||
]; | |||||
}, | |||||
body: MediaQuery.removePadding( | |||||
removeTop: true, | |||||
context: context, | |||||
child: TabBarView( | |||||
controller: _controller, | |||||
children: tabTitle | |||||
.map((s) => ListView.builder( | |||||
itemBuilder: (context, int) => Text("123"), | |||||
itemCount: 100, | |||||
)) | |||||
.toList(), | |||||
), | |||||
), | |||||
), | |||||
); | |||||
} | |||||
} | |||||
class _SliverTabBarDelegate extends SliverPersistentHeaderDelegate { | |||||
final TabBar widget; | |||||
const _SliverTabBarDelegate(this.widget) : assert(widget != null); | |||||
@override | |||||
Widget build(BuildContext context, double shrinkOffset, bool overlapsContent) { | |||||
return Container( | |||||
color: Colors.white, | |||||
child: Row( | |||||
children: <Widget>[ | |||||
const SizedBox(width: 30), | |||||
Expanded( | |||||
child: this.widget, | |||||
), | |||||
const SizedBox(width: 30), | |||||
], | |||||
), | |||||
); | |||||
} | |||||
@override | |||||
bool shouldRebuild(_SliverTabBarDelegate oldDelegate) { | |||||
return false; | |||||
} | |||||
@override | |||||
double get maxExtent => widget.preferredSize.height; | |||||
@override | |||||
double get minExtent => widget.preferredSize.height; | |||||
} |
@@ -15,28 +15,28 @@ class _TestPageState extends State<TestPage> { | |||||
@override | @override | ||||
void initState() { | void initState() { | ||||
NetUtil.request('/api/v1/rec/featured?page=3', method: NetMethod.GET, | |||||
onSuccess: (data) { | |||||
List goods = data['good']; | |||||
_styleModel = HomeGoodsStyleModel( | |||||
listColumn: '1', | |||||
// recommendList, | |||||
providerNameColor: '#ffffff', | |||||
providerNameBackgroundColor: '#ff4242', | |||||
shopNameColor: '#ffffff', | |||||
shopIcon: '', | |||||
couponFontColor: '#ffffff', | |||||
couponBgColor: '#ff4242', | |||||
commissionFontColor: '#ffffff', | |||||
commissionBgColor: '#ff4242', | |||||
marketPriceColor: '#ffffff', | |||||
currentPriceColor: '#ff4242', | |||||
); | |||||
_goods = goods.map((e) { | |||||
return HomeGoodsModel.fromJson(Map<String, dynamic>.from(e)); | |||||
}).toList(); | |||||
setState(() {}); | |||||
}); | |||||
// NetUtil.request('/api/v1/rec/featured?page=3', method: NetMethod.GET, | |||||
// onSuccess: (data) { | |||||
// List goods = data['good']; | |||||
// _styleModel = HomeGoodsStyleModel( | |||||
// listColumn: '1', | |||||
// // recommendList, | |||||
// providerNameColor: '#ffffff', | |||||
// providerNameBackgroundColor: '#ff4242', | |||||
// shopNameColor: '#ffffff', | |||||
// shopIcon: '', | |||||
// couponFontColor: '#ffffff', | |||||
// couponBgColor: '#ff4242', | |||||
// commissionFontColor: '#ffffff', | |||||
// commissionBgColor: '#ff4242', | |||||
// marketPriceColor: '#ffffff', | |||||
// currentPriceColor: '#ff4242', | |||||
// ); | |||||
// _goods = goods.map((e) { | |||||
// return HomeGoodsModel.fromJson(Map<String, dynamic>.from(e)); | |||||
// }).toList(); | |||||
// setState(() {}); | |||||
// }); | |||||
super.initState(); | super.initState(); | ||||
} | } | ||||
@@ -46,30 +46,32 @@ class _TestPageState extends State<TestPage> { | |||||
appBar: AppBar( | appBar: AppBar( | ||||
title: Text('测试'), | title: Text('测试'), | ||||
), | ), | ||||
body: CustomScrollView( | |||||
slivers: <Widget>[ | |||||
SliverFixedExtentList( | |||||
itemExtent: 200.0, | |||||
delegate: new SliverChildBuilderDelegate( | |||||
(BuildContext context, int index) { | |||||
//创建列表项 | |||||
return HomeGoodsItemSingle( | |||||
_goods[index % _goods.length], _styleModel); | |||||
}, | |||||
childCount: (_goods?.length ?? 0) * 2000, //50个列表项 | |||||
), | |||||
), | |||||
// SliverToBoxAdapter( | |||||
// child: ListView.builder( | |||||
// shrinkWrap: true, | |||||
// physics: NeverScrollableScrollPhysics(), | |||||
// itemCount: (_goods?.length ?? 0) * 20, | |||||
// itemBuilder: (context, index) { | |||||
// return HomeGoodsItemSingle( | |||||
// _goods[index % _goods.length], _styleModel); | |||||
// }), | |||||
// ) | |||||
], | |||||
)); | |||||
body: Container(), | |||||
// body: CustomScrollView( | |||||
// slivers: <Widget>[ | |||||
// SliverFixedExtentList( | |||||
// itemExtent: 200.0, | |||||
// delegate: new SliverChildBuilderDelegate( | |||||
// (BuildContext context, int index) { | |||||
// //创建列表项 | |||||
// return HomeGoodsItemSingle( | |||||
// _goods[index % _goods.length], _styleModel); | |||||
// }, | |||||
// childCount: (_goods?.length ?? 0) * 2000, //50个列表项 | |||||
// ), | |||||
// ), | |||||
// // SliverToBoxAdapter( | |||||
// // child: ListView.builder( | |||||
// // shrinkWrap: true, | |||||
// // physics: NeverScrollableScrollPhysics(), | |||||
// // itemCount: (_goods?.length ?? 0) * 20, | |||||
// // itemBuilder: (context, index) { | |||||
// // return HomeGoodsItemSingle( | |||||
// // _goods[index % _goods.length], _styleModel); | |||||
// // }), | |||||
// // ) | |||||
// ], | |||||
// )); | |||||
); | |||||
} | } | ||||
} | } |
@@ -16,6 +16,7 @@ import 'package:zhiying_base_widget/pages/security_page/security_mobile/security | |||||
import 'package:zhiying_base_widget/pages/security_page/security_page.dart'; | import 'package:zhiying_base_widget/pages/security_page/security_page.dart'; | ||||
import 'package:zhiying_base_widget/pages/security_page/security_password/security_password.dart'; | import 'package:zhiying_base_widget/pages/security_page/security_password/security_password.dart'; | ||||
import 'package:zhiying_base_widget/pages/setting_page/setting_page.dart'; | import 'package:zhiying_base_widget/pages/setting_page/setting_page.dart'; | ||||
import 'package:zhiying_base_widget/pages/team_page/team_page.dart'; | |||||
import 'package:zhiying_base_widget/pages/test_page/test_page.dart'; | import 'package:zhiying_base_widget/pages/test_page/test_page.dart'; | ||||
import 'package:zhiying_base_widget/pages/webview/base_webview.dart'; | import 'package:zhiying_base_widget/pages/webview/base_webview.dart'; | ||||
import 'package:zhiying_base_widget/widgets/goods_details/footer/goods_details_footer_widget.dart'; | import 'package:zhiying_base_widget/widgets/goods_details/footer/goods_details_footer_widget.dart'; | ||||
@@ -136,6 +137,9 @@ class BaseWidgetRegister { | |||||
PageFactory.regist( | PageFactory.regist( | ||||
'pub.flutter.invite_friends', (model) => InvitedFriendsPage(model)); | 'pub.flutter.invite_friends', (model) => InvitedFriendsPage(model)); | ||||
PageFactory.regist('pub.flutter.fav', (model) => FavoritePage()); | PageFactory.regist('pub.flutter.fav', (model) => FavoritePage()); | ||||
/// 我的团队 | |||||
PageFactory.regist('team_page', (model) => TeamPage()); | |||||
} | } | ||||
// 注册控件 | // 注册控件 | ||||
@@ -77,7 +77,7 @@ class _HomeGoodsHeaderState extends State<_HomeGoodsHeader> | |||||
_style = HomeGoodsStyleModel.fromJson(Map<String, dynamic>.from(json)); | _style = HomeGoodsStyleModel.fromJson(Map<String, dynamic>.from(json)); | ||||
_tabController = | _tabController = | ||||
TabController(length: _style.recommendList.length, vsync: this); | |||||
TabController(length: _style?.recommendList?.length?? 0, vsync: this); | |||||
if (_style.recommendList.first != null) { | if (_style.recommendList.first != null) { | ||||
widget.eventBus | widget.eventBus | ||||
.fire(HomeGoodsHeaderEvent(_style.recommendList.first.type)); | .fire(HomeGoodsHeaderEvent(_style.recommendList.first.type)); | ||||
@@ -14,8 +14,7 @@ class HomeGoodsItem extends StatelessWidget { | |||||
final HomeGoodsStyleModel style; | final HomeGoodsStyleModel style; | ||||
Map<String, dynamic> data; | Map<String, dynamic> data; | ||||
HomeGoodsItem(this.goods, this.style, {Key key, this.data}) | |||||
: super(key: key) { | |||||
HomeGoodsItem(this.goods, this.style, {Key key, this.data}) : super(key: key) { | |||||
if (this.data != null && this.data.containsKey('data')) { | if (this.data != null && this.data.containsKey('data')) { | ||||
String data = this.data['data']; | String data = this.data['data']; | ||||
Map<String, dynamic> json = Map<String, dynamic>.from(jsonDecode(data)); | Map<String, dynamic> json = Map<String, dynamic>.from(jsonDecode(data)); | ||||
@@ -34,10 +33,7 @@ class HomeGoodsItem extends StatelessWidget { | |||||
onTap: () => _onJumpGoodsDetails(context, goods), | onTap: () => _onJumpGoodsDetails(context, goods), | ||||
child: Container( | child: Container( | ||||
margin: EdgeInsets.only(top: 4, bottom: 4, left: 5, right: 5), | margin: EdgeInsets.only(top: 4, bottom: 4, left: 5, right: 5), | ||||
decoration: BoxDecoration( | |||||
color: Colors.white, | |||||
borderRadius: BorderRadius.all(Radius.circular(7.5))), | |||||
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.all(Radius.circular(7.5))), | |||||
child: Column( | child: Column( | ||||
crossAxisAlignment: CrossAxisAlignment.start, | crossAxisAlignment: CrossAxisAlignment.start, | ||||
children: <Widget>[ | children: <Widget>[ | ||||
@@ -66,7 +62,6 @@ class HomeGoodsItem extends StatelessWidget { | |||||
_createShop(), | _createShop(), | ||||
Expanded(child: Container()), | Expanded(child: Container()), | ||||
_createBottom(), | _createBottom(), | ||||
_createCupone(), | _createCupone(), | ||||
], | ], | ||||
), | ), | ||||
@@ -80,6 +75,18 @@ class HomeGoodsItem extends StatelessWidget { | |||||
Widget _createTitle() { | Widget _createTitle() { | ||||
List<InlineSpan> list = List(); | List<InlineSpan> list = List(); | ||||
if (goods.providerName != null && goods.providerName != '') { | if (goods.providerName != null && goods.providerName != '') { | ||||
HomeGoodsStyleModelProviders providers; | |||||
int providersLength = style?.providers?.length ?? 0; | |||||
if(providersLength > 0) { | |||||
for (int i = 0; i < style.providers.length; i++) { | |||||
HomeGoodsStyleModelProviders item = style.providers[i]; | |||||
if (goods.provider == item.type) { | |||||
providers = item; | |||||
break; | |||||
} | |||||
} | |||||
} | |||||
list.add(WidgetSpan( | list.add(WidgetSpan( | ||||
child: Container( | child: Container( | ||||
padding: EdgeInsets.only(left: 2, right: 2, top: 3, bottom: 3), | padding: EdgeInsets.only(left: 2, right: 2, top: 3, bottom: 3), | ||||
@@ -89,21 +96,20 @@ class HomeGoodsItem extends StatelessWidget { | |||||
style: TextStyle( | style: TextStyle( | ||||
fontSize: 9, | fontSize: 9, | ||||
height: 1, | height: 1, | ||||
color: HexColor.fromHex(style.providerNameColor), | |||||
// color: HexColor.fromHex(style.providerNameColor), | |||||
color: HexColor.fromHex(providers?.providerNameColor), | |||||
), | ), | ||||
), | ), | ||||
decoration: BoxDecoration( | decoration: BoxDecoration( | ||||
color: HexColor.fromHex(style.providerNameBackgroundColor), | |||||
// color: HexColor.fromHex(style.providerNameBackgroundColor), | |||||
color: HexColor.fromHex(providers?.providerBgColor), | |||||
borderRadius: BorderRadius.circular(2.5)), | borderRadius: BorderRadius.circular(2.5)), | ||||
), | ), | ||||
)); | )); | ||||
} | } | ||||
list.add(TextSpan( | list.add(TextSpan( | ||||
text: goods.goodTitle, | text: goods.goodTitle, | ||||
style: TextStyle( | |||||
fontSize: 15, | |||||
color: HexColor.fromHex('#333333'), | |||||
fontWeight: FontWeight.bold), | |||||
style: TextStyle(fontSize: 15, color: HexColor.fromHex('#333333'), fontWeight: FontWeight.bold), | |||||
)); | )); | ||||
return RichText( | return RichText( | ||||
maxLines: 2, | maxLines: 2, | ||||
@@ -131,10 +137,7 @@ class HomeGoodsItem extends StatelessWidget { | |||||
child: Text( | child: Text( | ||||
goods.shopName, | goods.shopName, | ||||
maxLines: 1, | maxLines: 1, | ||||
style: TextStyle( | |||||
color: HexColor.fromHex(style.shopNameColor), | |||||
fontSize: 11, | |||||
fontWeight: FontWeight.w400), | |||||
style: TextStyle(color: HexColor.fromHex(style.shopNameColor), fontSize: 11, fontWeight: FontWeight.w400), | |||||
)) | )) | ||||
], | ], | ||||
), | ), | ||||
@@ -144,42 +147,103 @@ class HomeGoodsItem extends StatelessWidget { | |||||
Widget _createCupone() { | Widget _createCupone() { | ||||
List<Widget> widgets = List(); | List<Widget> widgets = List(); | ||||
if (goods.coupon != null && goods.coupon != '') { | if (goods.coupon != null && goods.coupon != '') { | ||||
var couponDe = style?.couponCommission?.coupon?.isImg == '1' | |||||
? BoxDecoration( | |||||
image: DecorationImage( | |||||
image: CachedNetworkImageProvider(style?.couponCommission?.coupon?.couponBgImg ?? ''), | |||||
), | |||||
borderRadius: BorderRadius.circular(2.5), | |||||
) | |||||
: BoxDecoration( | |||||
color: HexColor.fromHex(style?.couponCommission?.coupon?.couponBgColor), | |||||
borderRadius: BorderRadius.circular(2.5), | |||||
); | |||||
widgets.add(Container( | widgets.add(Container( | ||||
margin: EdgeInsets.only(right: 5), | margin: EdgeInsets.only(right: 5), | ||||
padding: EdgeInsets.only(left: 10, right: 10, top: 3, bottom: 3), | padding: EdgeInsets.only(left: 10, right: 10, top: 3, bottom: 3), | ||||
decoration: BoxDecoration( | |||||
color: HexColor.fromHex(style.couponBgColor), | |||||
borderRadius: BorderRadius.circular(2.5), | |||||
), | |||||
child: Text( | |||||
goods.coupon, | |||||
textAlign: TextAlign.center, | |||||
// decoration: BoxDecoration( | |||||
// color: HexColor.fromHex(style.couponBgColor), | |||||
// borderRadius: BorderRadius.circular(2.5), | |||||
// ), | |||||
// child: Text( | |||||
// goods.coupon, | |||||
// textAlign: TextAlign.center, | |||||
// maxLines: 1, | |||||
// style: TextStyle( | |||||
// height: 1, | |||||
// fontSize: 11, | |||||
// // color: HexColor.fromHex(style.couponFontColor), | |||||
// color: HexColor.fromHex(style?.couponCommission?.coupon?.couponFontColor), | |||||
// ), | |||||
// ), | |||||
decoration: couponDe, | |||||
child: RichText( | |||||
maxLines: 1, | maxLines: 1, | ||||
style: TextStyle( | |||||
height: 1, | |||||
fontSize: 11, | |||||
color: HexColor.fromHex(style.couponFontColor), | |||||
), | |||||
textAlign: TextAlign.center, | |||||
text: TextSpan( | |||||
text: '${goods?.coupon ?? '0'}', | |||||
style: TextStyle( | |||||
height: 1, | |||||
fontSize: 11, | |||||
color: HexColor.fromHex(style?.couponCommission?.coupon?.couponFontColor), | |||||
), | |||||
children: [ | |||||
TextSpan( | |||||
text: '${style?.couponCommission?.coupon?.couonText ?? '元劵'}', | |||||
style: TextStyle( | |||||
height: 1, | |||||
fontSize: 11, | |||||
color: HexColor.fromHex(style?.couponCommission?.coupon?.couponFontColor), | |||||
), | |||||
) | |||||
]), | |||||
), | ), | ||||
)); | )); | ||||
} | } | ||||
if (goods.commission != null || goods.commission != '') { | if (goods.commission != null || goods.commission != '') { | ||||
var commissionDe = style?.couponCommission?.commission?.isImg == '1' | |||||
? BoxDecoration( | |||||
image: DecorationImage( | |||||
image: CachedNetworkImageProvider(style?.couponCommission?.commission?.commissionBgImg ?? ''), | |||||
), | |||||
borderRadius: BorderRadius.circular(2.5), | |||||
) | |||||
: BoxDecoration( | |||||
color: HexColor.fromHex(style?.couponCommission?.commission?.commissionBgColor), | |||||
borderRadius: BorderRadius.circular(2.5), | |||||
); | |||||
widgets.add(Container( | widgets.add(Container( | ||||
margin: EdgeInsets.only(right: 5), | margin: EdgeInsets.only(right: 5), | ||||
padding: EdgeInsets.only(left: 10, right: 10, top: 3, bottom: 3), | padding: EdgeInsets.only(left: 10, right: 10, top: 3, bottom: 3), | ||||
decoration: BoxDecoration( | |||||
color: HexColor.fromHex(style.commissionBgColor), | |||||
borderRadius: BorderRadius.circular(2.5), | |||||
), | |||||
child: Text( | |||||
goods.commission, | |||||
textAlign: TextAlign.center, | |||||
// decoration: BoxDecoration( | |||||
// color: HexColor.fromHex(style.commissionBgColor), | |||||
// borderRadius: BorderRadius.circular(2.5), | |||||
// ), | |||||
decoration: commissionDe, | |||||
child: RichText( | |||||
maxLines: 1, | maxLines: 1, | ||||
style: TextStyle( | |||||
height: 1, | |||||
fontSize: 11, | |||||
color: HexColor.fromHex(style.commissionFontColor), | |||||
textAlign: TextAlign.center, | |||||
text: TextSpan( | |||||
text: '${style?.couponCommission?.commission?.commissionText ?? ''}', | |||||
style: TextStyle( | |||||
height: 1, | |||||
fontSize: 11, | |||||
color: HexColor.fromHex(style?.couponCommission?.commission?.commissionFontColor), | |||||
), | |||||
children: [ | |||||
TextSpan( | |||||
text: '${goods?.commission ?? '0'}', | |||||
style: TextStyle( | |||||
height: 1, | |||||
fontSize: 11, | |||||
color: HexColor.fromHex(style?.couponCommission?.commission?.commissionFontColor), | |||||
), | |||||
) | |||||
] | |||||
), | ), | ||||
), | ), | ||||
)); | )); | ||||
@@ -14,8 +14,7 @@ class HomeGoodsItemSingle extends StatelessWidget { | |||||
final HomeGoodsStyleModel style; | final HomeGoodsStyleModel style; | ||||
Map<String, dynamic> data; | Map<String, dynamic> data; | ||||
HomeGoodsItemSingle(this.goods, this.style, {Key key, this.data}) | |||||
: super(key: key) { | |||||
HomeGoodsItemSingle(this.goods, this.style, {Key key, this.data}) : super(key: key) { | |||||
if (this.data != null && this.data.containsKey('data')) { | if (this.data != null && this.data.containsKey('data')) { | ||||
String data = this.data['data']; | String data = this.data['data']; | ||||
Map<String, dynamic> json = Map<String, dynamic>.from(jsonDecode(data)); | Map<String, dynamic> json = Map<String, dynamic>.from(jsonDecode(data)); | ||||
@@ -35,9 +34,7 @@ class HomeGoodsItemSingle extends StatelessWidget { | |||||
child: Container( | child: Container( | ||||
margin: EdgeInsets.only(left: 12.5, right: 12.5, top: 4, bottom: 4), | margin: EdgeInsets.only(left: 12.5, right: 12.5, top: 4, bottom: 4), | ||||
padding: EdgeInsets.all(7.5), | padding: EdgeInsets.all(7.5), | ||||
decoration: BoxDecoration( | |||||
color: Colors.white, | |||||
borderRadius: BorderRadius.all(Radius.circular(7.5))), | |||||
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.all(Radius.circular(7.5))), | |||||
child: Row( | child: Row( | ||||
crossAxisAlignment: CrossAxisAlignment.start, | crossAxisAlignment: CrossAxisAlignment.start, | ||||
children: <Widget>[ | children: <Widget>[ | ||||
@@ -81,6 +78,18 @@ class HomeGoodsItemSingle extends StatelessWidget { | |||||
Widget _createTitle() { | Widget _createTitle() { | ||||
List<InlineSpan> list = List(); | List<InlineSpan> list = List(); | ||||
if (goods.providerName != null && goods.providerName != '') { | if (goods.providerName != null && goods.providerName != '') { | ||||
HomeGoodsStyleModelProviders providers; | |||||
int providersLength = style?.providers?.length ?? 0; | |||||
if (providersLength > 0) { | |||||
for (int i = 0; i < style?.providers?.length ?? 0; i++) { | |||||
HomeGoodsStyleModelProviders item = style.providers[i]; | |||||
if (goods.provider == item.type) { | |||||
providers = item; | |||||
break; | |||||
} | |||||
} | |||||
} | |||||
list.add(WidgetSpan( | list.add(WidgetSpan( | ||||
child: Container( | child: Container( | ||||
padding: EdgeInsets.only(left: 2, right: 2, top: 3, bottom: 3), | padding: EdgeInsets.only(left: 2, right: 2, top: 3, bottom: 3), | ||||
@@ -90,21 +99,20 @@ class HomeGoodsItemSingle extends StatelessWidget { | |||||
style: TextStyle( | style: TextStyle( | ||||
fontSize: 9, | fontSize: 9, | ||||
height: 1, | height: 1, | ||||
color: HexColor.fromHex(style.providerNameColor), | |||||
// color: HexColor.fromHex(style.providerNameColor), | |||||
color: HexColor.fromHex(providers?.providerNameColor), | |||||
), | ), | ||||
), | ), | ||||
decoration: BoxDecoration( | decoration: BoxDecoration( | ||||
color: HexColor.fromHex(style.providerNameBackgroundColor), | |||||
// color: HexColor.fromHex(style.providerNameBackgroundColor), | |||||
color: HexColor.fromHex(providers?.providerBgColor), | |||||
borderRadius: BorderRadius.circular(2.5)), | borderRadius: BorderRadius.circular(2.5)), | ||||
), | ), | ||||
)); | )); | ||||
} | } | ||||
list.add(TextSpan( | list.add(TextSpan( | ||||
text: goods.goodTitle, | text: goods.goodTitle, | ||||
style: TextStyle( | |||||
fontSize: 15, | |||||
color: HexColor.fromHex('#333333'), | |||||
fontWeight: FontWeight.bold), | |||||
style: TextStyle(fontSize: 15, color: HexColor.fromHex('#333333'), fontWeight: FontWeight.bold), | |||||
)); | )); | ||||
return RichText( | return RichText( | ||||
maxLines: 2, | maxLines: 2, | ||||
@@ -130,13 +138,10 @@ class HomeGoodsItemSingle extends StatelessWidget { | |||||
), | ), | ||||
Expanded( | Expanded( | ||||
child: Text( | child: Text( | ||||
goods.shopName, | |||||
maxLines: 1, | |||||
style: TextStyle( | |||||
color: HexColor.fromHex(style.shopNameColor), | |||||
fontSize: 11, | |||||
fontWeight: FontWeight.w400), | |||||
)) | |||||
goods.shopName, | |||||
maxLines: 1, | |||||
style: TextStyle(color: HexColor.fromHex(style.shopNameColor), fontSize: 11, fontWeight: FontWeight.w400), | |||||
)) | |||||
], | ], | ||||
), | ), | ||||
); | ); | ||||
@@ -145,45 +150,119 @@ class HomeGoodsItemSingle extends StatelessWidget { | |||||
Widget _createCupone() { | Widget _createCupone() { | ||||
List<Widget> widgets = List(); | List<Widget> widgets = List(); | ||||
if (goods.coupon != null && goods.coupon != '') { | if (goods.coupon != null && goods.coupon != '') { | ||||
var couponDe = style?.couponCommission?.coupon?.isImg == '1' | |||||
? BoxDecoration( | |||||
image: DecorationImage( | |||||
image: CachedNetworkImageProvider(style?.couponCommission?.coupon?.couponBgImg ?? ''), | |||||
), | |||||
borderRadius: BorderRadius.circular(2.5), | |||||
) | |||||
: BoxDecoration( | |||||
color: HexColor.fromHex(style?.couponCommission?.coupon?.couponBgColor), | |||||
borderRadius: BorderRadius.circular(2.5), | |||||
); | |||||
widgets.add(Container( | widgets.add(Container( | ||||
margin: EdgeInsets.only(right: 5), | margin: EdgeInsets.only(right: 5), | ||||
padding: EdgeInsets.only(left: 10, right: 10, top: 3, bottom: 3), | padding: EdgeInsets.only(left: 10, right: 10, top: 3, bottom: 3), | ||||
decoration: BoxDecoration( | |||||
color: HexColor.fromHex(style.couponBgColor), | |||||
borderRadius: BorderRadius.circular(2.5), | |||||
), | |||||
child: Text( | |||||
goods.coupon, | |||||
textAlign: TextAlign.center, | |||||
// decoration: BoxDecoration( | |||||
// color: HexColor.fromHex(style.couponBgColor), | |||||
// borderRadius: BorderRadius.circular(2.5), | |||||
// ), | |||||
// child: Text( | |||||
// goods.coupon, | |||||
// textAlign: TextAlign.center, | |||||
// maxLines: 1, | |||||
// style: TextStyle( | |||||
// height: 1, | |||||
// fontSize: 11, | |||||
// // color: HexColor.fromHex(style.couponFontColor), | |||||
// color: HexColor.fromHex(style?.couponCommission?.coupon?.couponFontColor), | |||||
// ), | |||||
// ), | |||||
decoration: couponDe, | |||||
child: RichText( | |||||
maxLines: 1, | maxLines: 1, | ||||
style: TextStyle( | |||||
height: 1, | |||||
fontSize: 11, | |||||
color: HexColor.fromHex(style.couponFontColor), | |||||
), | |||||
textAlign: TextAlign.center, | |||||
text: TextSpan( | |||||
text: '${goods?.coupon ?? '0'}', | |||||
style: TextStyle( | |||||
height: 1, | |||||
fontSize: 11, | |||||
color: HexColor.fromHex(style?.couponCommission?.coupon?.couponFontColor), | |||||
), | |||||
children: [ | |||||
TextSpan( | |||||
text: '${style?.couponCommission?.coupon?.couonText ?? '元劵'}', | |||||
style: TextStyle( | |||||
height: 1, | |||||
fontSize: 11, | |||||
color: HexColor.fromHex(style?.couponCommission?.coupon?.couponFontColor), | |||||
), | |||||
) | |||||
]), | |||||
), | ), | ||||
)); | )); | ||||
} | } | ||||
if (goods.commission != null || goods.commission != '') { | if (goods.commission != null || goods.commission != '') { | ||||
widgets.add(Container( | |||||
margin: EdgeInsets.only(right: 5), | |||||
padding: EdgeInsets.only(left: 10, right: 10, top: 3, bottom: 3), | |||||
decoration: BoxDecoration( | |||||
color: HexColor.fromHex(style.commissionBgColor), | |||||
borderRadius: BorderRadius.circular(2.5), | |||||
), | |||||
child: Text( | |||||
goods.commission, | |||||
textAlign: TextAlign.center, | |||||
maxLines: 1, | |||||
style: TextStyle( | |||||
height: 1, | |||||
fontSize: 11, | |||||
color: HexColor.fromHex(style.commissionFontColor), | |||||
var commissionDe = style?.couponCommission?.commission?.isImg == '1' | |||||
? BoxDecoration( | |||||
image: DecorationImage( | |||||
image: CachedNetworkImageProvider(style?.couponCommission?.commission?.commissionBgImg ?? ''), | |||||
), | |||||
borderRadius: BorderRadius.circular(2.5), | |||||
) | |||||
: BoxDecoration( | |||||
color: HexColor.fromHex(style?.couponCommission?.commission?.commissionBgColor), | |||||
borderRadius: BorderRadius.circular(2.5), | |||||
); | |||||
widgets.add( | |||||
Container( | |||||
margin: EdgeInsets.only(right: 5), | |||||
padding: EdgeInsets.only(left: 10, right: 10, top: 3, bottom: 3), | |||||
// decoration: BoxDecoration( | |||||
// color: HexColor.fromHex(style.commissionBgColor), | |||||
// borderRadius: BorderRadius.circular(2.5), | |||||
// ), | |||||
// child: Text( | |||||
// goods.commission, | |||||
// textAlign: TextAlign.center, | |||||
// maxLines: 1, | |||||
// style: TextStyle( | |||||
// height: 1, | |||||
// fontSize: 11, | |||||
// // color: HexColor.fromHex(style.commissionFontColor), | |||||
// color: HexColor.fromHex(style?.couponCommission?.commission?.commissionFontColor), | |||||
// ), | |||||
// ), | |||||
decoration: commissionDe, | |||||
child: RichText( | |||||
maxLines: 1, | |||||
textAlign: TextAlign.center, | |||||
text: TextSpan( | |||||
text: '${style?.couponCommission?.commission?.commissionText ?? ''}', | |||||
style: TextStyle( | |||||
height: 1, | |||||
fontSize: 11, | |||||
color: HexColor.fromHex(style?.couponCommission?.commission?.commissionFontColor), | |||||
), | |||||
children: [ | |||||
TextSpan( | |||||
text: '${goods?.commission ?? '0'}', | |||||
style: TextStyle( | |||||
height: 1, | |||||
fontSize: 11, | |||||
color: HexColor.fromHex(style?.couponCommission?.commission?.commissionFontColor), | |||||
), | |||||
) | |||||
] | |||||
), | |||||
), | ), | ||||
), | ), | ||||
)); | |||||
); | |||||
} | } | ||||
return Container( | return Container( | ||||
@@ -1,69 +1,453 @@ | |||||
import 'package:zhiying_base_widget/widgets/home/home_goods/models/home_goods_header_model.dart'; | import 'package:zhiying_base_widget/widgets/home/home_goods/models/home_goods_header_model.dart'; | ||||
class HomeGoodsStyleModel { | class HomeGoodsStyleModel { | ||||
String listColumn; | String listColumn; | ||||
List<HomeGoodsHeaderModel> recommendList; | List<HomeGoodsHeaderModel> recommendList; | ||||
String providerNameColor; | |||||
String providerNameBackgroundColor; | |||||
List<String> hotRankIconList; | |||||
String topMargin; | |||||
String leftRighMargin; | |||||
List<HomeGoodsStyleModelProviders> providers; | |||||
String titleColor; | |||||
String currentPriceColor; | |||||
String marketPriceColor; | |||||
String shopNameColor; | String shopNameColor; | ||||
String saleCountColor; | |||||
String saleCountText; | |||||
String shopIcon; | String shopIcon; | ||||
String couponFontColor; | |||||
String couponBgColor; | |||||
String commissionFontColor; | |||||
String commissionBgColor; | |||||
String marketPriceColor; | |||||
String currentPriceColor; | |||||
HomeGoodsStyleModelCouponCommission couponCommission; | |||||
HomeGoodsStyleModelHotRank hotRank; | |||||
HomeGoodsStyleModel( | |||||
{this.listColumn, | |||||
this.recommendList, | |||||
this.providerNameColor, | |||||
this.providerNameBackgroundColor, | |||||
this.shopNameColor, | |||||
this.shopIcon, | |||||
this.couponFontColor, | |||||
this.couponBgColor, | |||||
this.commissionFontColor, | |||||
this.commissionBgColor, | |||||
this.marketPriceColor, | |||||
this.currentPriceColor}); | |||||
HomeGoodsStyleModel({ | |||||
this.listColumn, | |||||
this.recommendList, | |||||
this.hotRankIconList, | |||||
this.topMargin, | |||||
this.leftRighMargin, | |||||
this.providers, | |||||
this.titleColor, | |||||
this.currentPriceColor, | |||||
this.marketPriceColor, | |||||
this.shopNameColor, | |||||
this.saleCountColor, | |||||
this.saleCountText, | |||||
this.shopIcon, | |||||
this.couponCommission, | |||||
this.hotRank, | |||||
}); | |||||
HomeGoodsStyleModel.fromJson(Map<String, dynamic> json) { | HomeGoodsStyleModel.fromJson(Map<String, dynamic> json) { | ||||
listColumn = json['list_column']; | |||||
listColumn = json['list_column']?.toString(); | |||||
if (json['recommend_list'] != null) { | if (json['recommend_list'] != null) { | ||||
recommendList = new List<HomeGoodsHeaderModel>(); | recommendList = new List<HomeGoodsHeaderModel>(); | ||||
json['recommend_list'].forEach((v) { | json['recommend_list'].forEach((v) { | ||||
recommendList.add(new HomeGoodsHeaderModel.fromJson(v)); | recommendList.add(new HomeGoodsHeaderModel.fromJson(v)); | ||||
}); | }); | ||||
} | } | ||||
providerNameColor = json['provider_name_color']; | |||||
providerNameBackgroundColor = json['provider_name_background_color']; | |||||
shopNameColor = json['shop_name_color']; | |||||
shopIcon = json['shop_icon']; | |||||
couponFontColor = json['coupon_font_color']; | |||||
couponBgColor = json['coupon_bg_color']; | |||||
commissionFontColor = json['commission_font_color']; | |||||
commissionBgColor = json['commission_bg_color']; | |||||
marketPriceColor = json['market_price_color']; | |||||
currentPriceColor = json['current_price_color']; | |||||
if(json['hot_rank_icon_list'] != null) { | |||||
hotRankIconList = json['hot_rank_icon_list'].cast<String>(); | |||||
} | |||||
topMargin = json['top_margin']?.toString(); | |||||
leftRighMargin = json['left_righ_margin']?.toString(); | |||||
if (json['providers'] != null) { | |||||
providers = new List<HomeGoodsStyleModelProviders>(); | |||||
json['providers'].forEach((v) { | |||||
providers.add(new HomeGoodsStyleModelProviders.fromJson(v)); | |||||
}); | |||||
} | |||||
titleColor = json['title_color']?.toString(); | |||||
currentPriceColor = json['current_price_color']?.toString(); | |||||
marketPriceColor = json['market_price_color']?.toString(); | |||||
shopNameColor = json['shop_name_color']?.toString(); | |||||
saleCountColor = json['sale_count_color']?.toString(); | |||||
saleCountText = json['sale_count_text']?.toString(); | |||||
shopIcon = json['shop_icon']?.toString(); | |||||
couponCommission = json['coupon_commission'] != null ? new HomeGoodsStyleModelCouponCommission.fromJson(json['coupon_commission']) : null; | |||||
hotRank = json['hot_rank'] != null ? new HomeGoodsStyleModelHotRank.fromJson(json['hot_rank']) : null; | |||||
} | } | ||||
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['list_column'] = this.listColumn; | data['list_column'] = this.listColumn; | ||||
if (this.recommendList != null) { | if (this.recommendList != null) { | ||||
data['recommend_list'] = | |||||
this.recommendList.map((v) => v.toJson()).toList(); | |||||
data['recommend_list'] = this.recommendList.map((v) => v.toJson()).toList(); | |||||
} | } | ||||
data['provider_name_color'] = this.providerNameColor; | |||||
data['provider_name_background_color'] = this.providerNameBackgroundColor; | |||||
data['hot_rank_icon_list'] = this.hotRankIconList; | |||||
data['top_margin'] = this.topMargin; | |||||
data['left_righ_margin'] = this.leftRighMargin; | |||||
if (this.providers != null) { | |||||
data['providers'] = this.providers.map((v) => v.toJson()).toList(); | |||||
} | |||||
data['title_color'] = this.titleColor; | |||||
data['current_price_color'] = this.currentPriceColor; | |||||
data['market_price_color'] = this.marketPriceColor; | |||||
data['shop_name_color'] = this.shopNameColor; | data['shop_name_color'] = this.shopNameColor; | ||||
data['sale_count_color'] = this.saleCountColor; | |||||
data['sale_count_text'] = this.saleCountText; | |||||
data['shop_icon'] = this.shopIcon; | data['shop_icon'] = this.shopIcon; | ||||
if (this.couponCommission != null) { | |||||
data['coupon_commission'] = this.couponCommission.toJson(); | |||||
} | |||||
if (this.hotRank != null) { | |||||
data['hot_rank'] = this.hotRank.toJson(); | |||||
} | |||||
return data; | |||||
} | |||||
} | |||||
class HomeGoodsStyleModelProviders { | |||||
String type; | |||||
String providerNameColor; | |||||
String providerBgColor; | |||||
HomeGoodsStyleModelProviders({this.type, this.providerNameColor, this.providerBgColor}); | |||||
HomeGoodsStyleModelProviders.fromJson(Map<String, dynamic> json) { | |||||
type = json['type']?.toString(); | |||||
providerNameColor = json['provider_name_color']?.toString(); | |||||
providerBgColor = json['provider_bg_color']?.toString(); | |||||
} | |||||
Map<String, dynamic> toJson() { | |||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
data['type'] = this.type; | |||||
data['provider_name_color'] = this.providerNameColor; | |||||
data['provider_bg_color'] = this.providerBgColor; | |||||
return data; | |||||
} | |||||
} | |||||
class HomeGoodsStyleModelCouponCommission { | |||||
HomeGoodsStyleModelCoupon coupon; | |||||
HomeGoodsStyleModelCommission commission; | |||||
HomeGoodsStyleModelCouponCommission({this.coupon, this.commission}); | |||||
HomeGoodsStyleModelCouponCommission.fromJson(Map<String, dynamic> json) { | |||||
coupon = json['left'] != null ? new HomeGoodsStyleModelCoupon.fromJson(json['left']) : null; | |||||
commission = json['right'] != null ? new HomeGoodsStyleModelCommission.fromJson(json['right']) : null; | |||||
} | |||||
Map<String, dynamic> toJson() { | |||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
if (this.coupon != null) { | |||||
data['left'] = this.coupon.toJson(); | |||||
} | |||||
if (this.commission != null) { | |||||
data['right'] = this.commission.toJson(); | |||||
} | |||||
return data; | |||||
} | |||||
} | |||||
class HomeGoodsStyleModelCoupon { | |||||
String couonText; | |||||
String couponFontColor; | |||||
String couponBgColor; | |||||
String couponBgImg; | |||||
String isImg; | |||||
HomeGoodsStyleModelCoupon({this.couonText, this.couponFontColor, this.couponBgColor, this.couponBgImg, this.isImg}); | |||||
HomeGoodsStyleModelCoupon.fromJson(Map<String, dynamic> json) { | |||||
couonText = json['couon_text']?.toString(); | |||||
couponFontColor = json['coupon_font_color']?.toString(); | |||||
couponBgColor = json['coupon_bg_color']?.toString(); | |||||
couponBgImg = json['coupon_bg_img']?.toString(); | |||||
isImg = json['is_img']?.toString(); | |||||
} | |||||
Map<String, dynamic> toJson() { | |||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
data['couon_text'] = this.couonText; | |||||
data['coupon_font_color'] = this.couponFontColor; | data['coupon_font_color'] = this.couponFontColor; | ||||
data['coupon_bg_color'] = this.couponBgColor; | data['coupon_bg_color'] = this.couponBgColor; | ||||
data['coupon_bg_img'] = this.couponBgImg; | |||||
data['is_img'] = this.isImg; | |||||
return data; | |||||
} | |||||
} | |||||
class HomeGoodsStyleModelCommission { | |||||
String commissionText; | |||||
String commissionFontColor; | |||||
String commissionBgColor; | |||||
String commissionBgImg; | |||||
String isImg; | |||||
HomeGoodsStyleModelCommission({this.commissionText, this.commissionFontColor, this.commissionBgColor, this.commissionBgImg, this.isImg}); | |||||
HomeGoodsStyleModelCommission.fromJson(Map<String, dynamic> json) { | |||||
commissionText = json['commission_text']?.toString(); | |||||
commissionFontColor = json['commission_font_color']?.toString(); | |||||
commissionBgColor = json['commission_bg_color']?.toString(); | |||||
commissionBgImg = json['commission_bg_img']?.toString(); | |||||
isImg = json['is_img']?.toString(); | |||||
} | |||||
Map<String, dynamic> toJson() { | |||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
data['commission_text'] = this.commissionText; | |||||
data['commission_font_color'] = this.commissionFontColor; | data['commission_font_color'] = this.commissionFontColor; | ||||
data['commission_bg_color'] = this.commissionBgColor; | data['commission_bg_color'] = this.commissionBgColor; | ||||
data['market_price_color'] = this.marketPriceColor; | |||||
data['current_price_color'] = this.currentPriceColor; | |||||
data['commission_bg_img'] = this.commissionBgImg; | |||||
data['is_img'] = this.isImg; | |||||
return data; | |||||
} | |||||
} | |||||
class HomeGoodsStyleModelHotRank { | |||||
String isOpen; | |||||
String bgColor; | |||||
String fontColor; | |||||
String hotSaleImg; | |||||
String buyNowImg; | |||||
HomeGoodsStyleModelHotRank({this.isOpen, this.bgColor, this.fontColor, this.hotSaleImg, this.buyNowImg}); | |||||
HomeGoodsStyleModelHotRank.fromJson(Map<String, dynamic> json) { | |||||
isOpen = json['is_open']?.toString(); | |||||
bgColor = json['bg_color']?.toString(); | |||||
fontColor = json['font_color']?.toString(); | |||||
hotSaleImg = json['hot_sale_img']?.toString(); | |||||
buyNowImg = json['buy_now_img']?.toString(); | |||||
} | |||||
Map<String, dynamic> toJson() { | |||||
final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
data['is_open'] = this.isOpen; | |||||
data['bg_color'] = this.bgColor; | |||||
data['font_color'] = this.fontColor; | |||||
data['hot_sale_img'] = this.hotSaleImg; | |||||
data['buy_now_img'] = this.buyNowImg; | |||||
return data; | return data; | ||||
} | } | ||||
} | |||||
} | |||||
// class HomeGoodsStyleModel { | |||||
// String listColumn; | |||||
// List<HomeGoodsHeaderModel> recommendList; | |||||
// String providerNameColor; | |||||
// String providerNameBackgroundColor; | |||||
// String shopNameColor; | |||||
// String shopIcon; | |||||
// String couponFontColor; | |||||
// String couponBgColor; | |||||
// String commissionFontColor; | |||||
// String commissionBgColor; | |||||
// String marketPriceColor; | |||||
// String currentPriceColor; | |||||
// | |||||
// /// 2020-10-12日 新加 | |||||
// String title_color; | |||||
// String sale_count_color; | |||||
// String sale_count_text; | |||||
// String top_margin; | |||||
// String left_righ_margin; | |||||
// | |||||
// HomeGoodsStyleModel({ | |||||
// this.listColumn, | |||||
// this.recommendList, | |||||
// this.providerNameColor, | |||||
// this.providerNameBackgroundColor, | |||||
// this.shopNameColor, | |||||
// this.shopIcon, | |||||
// this.couponFontColor, | |||||
// this.couponBgColor, | |||||
// this.commissionFontColor, | |||||
// this.commissionBgColor, | |||||
// this.marketPriceColor, | |||||
// this.currentPriceColor, | |||||
// }); | |||||
// | |||||
// HomeGoodsStyleModel.fromJson(Map<String, dynamic> json) { | |||||
// listColumn = json['list_column']?.toString(); | |||||
// if (json['recommend_list'] != null) { | |||||
// recommendList = new List<HomeGoodsHeaderModel>(); | |||||
// json['recommend_list'].forEach((v) { | |||||
// recommendList.add(new HomeGoodsHeaderModel.fromJson(v)); | |||||
// }); | |||||
// } | |||||
// providerNameColor = json['provider_name_color']?.toString(); | |||||
// providerNameBackgroundColor = json['provider_name_background_color']?.toString(); | |||||
// shopNameColor = json['shop_name_color']?.toString(); | |||||
// shopIcon = json['shop_icon']?.toString(); | |||||
// couponFontColor = json['coupon_font_color']?.toString(); | |||||
// couponBgColor = json['coupon_bg_color']?.toString(); | |||||
// commissionFontColor = json['commission_font_color']?.toString(); | |||||
// commissionBgColor = json['commission_bg_color']?.toString(); | |||||
// marketPriceColor = json['market_price_color']?.toString(); | |||||
// currentPriceColor = json['current_price_color']?.toString(); | |||||
// } | |||||
// | |||||
// Map<String, dynamic> toJson() { | |||||
// final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
// data['list_column'] = this.listColumn; | |||||
// if (this.recommendList != null) { | |||||
// data['recommend_list'] = this.recommendList.map((v) => v.toJson()).toList(); | |||||
// } | |||||
// data['provider_name_color'] = this.providerNameColor; | |||||
// data['provider_name_background_color'] = this.providerNameBackgroundColor; | |||||
// data['shop_name_color'] = this.shopNameColor; | |||||
// data['shop_icon'] = this.shopIcon; | |||||
// data['coupon_font_color'] = this.couponFontColor; | |||||
// data['coupon_bg_color'] = this.couponBgColor; | |||||
// data['commission_font_color'] = this.commissionFontColor; | |||||
// data['commission_bg_color'] = this.commissionBgColor; | |||||
// data['market_price_color'] = this.marketPriceColor; | |||||
// data['current_price_color'] = this.currentPriceColor; | |||||
// return data; | |||||
// } | |||||
// } | |||||
// | |||||
// class HomeGoodsStyleProvidersModel { | |||||
// String type; | |||||
// String provider_name_color; | |||||
// String provider_bg_color; | |||||
// | |||||
// HomeGoodsStyleProvidersModel({ | |||||
// this.type, | |||||
// this.provider_name_color, | |||||
// this.provider_bg_color, | |||||
// }); | |||||
// | |||||
// factory HomeGoodsStyleProvidersModel.fromJson(Map<String, dynamic> json) { | |||||
// return HomeGoodsStyleProvidersModel( | |||||
// type: json['type']?.toString(), | |||||
// provider_name_color: json['provider_name_color']?.toString(), | |||||
// provider_bg_color: json['provider_bg_color']?.toString(), | |||||
// ); | |||||
// } | |||||
// | |||||
// Map<String, dynamic> toJson() { | |||||
// final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
// data['type'] = this.type; | |||||
// data['provider_name_color'] = this.provider_name_color; | |||||
// data['provider_bg_color'] = this.provider_bg_color; | |||||
// return data; | |||||
// } | |||||
// } | |||||
// | |||||
// class HomeGoodsStyleCouponCommissionModel { | |||||
// HomeGoodsStyleCouonModel couonModel; | |||||
// HomeGoodsStyleCommissionModel commissionModel; | |||||
// | |||||
// HomeGoodsStyleCouponCommissionModel({ | |||||
// this.couonModel, | |||||
// this.commissionModel, | |||||
// }); | |||||
// | |||||
// factory HomeGoodsStyleCouponCommissionModel.fromJson(Map<String, dynamic> json) { | |||||
// return HomeGoodsStyleCouponCommissionModel( | |||||
// couonModel: json.containsKey('left') ? HomeGoodsStyleCouonModel.fromJson(json['left']) : null, | |||||
// commissionModel: json.containsKey('right') ? HomeGoodsStyleCommissionModel.fromJson(json['left']) : null, | |||||
// ); | |||||
// } | |||||
// } | |||||
// | |||||
// class HomeGoodsStyleCouonModel { | |||||
// String couon_text; | |||||
// String coupon_font_color; | |||||
// String coupon_bg_color; | |||||
// String coupon_bg_img; | |||||
// String is_img; | |||||
// | |||||
// HomeGoodsStyleCouonModel({ | |||||
// this.couon_text, | |||||
// this.coupon_font_color, | |||||
// this.coupon_bg_color, | |||||
// this.coupon_bg_img, | |||||
// this.is_img, | |||||
// }); | |||||
// | |||||
// factory HomeGoodsStyleCouonModel.fromJson(Map<String, dynamic> json) { | |||||
// return HomeGoodsStyleCouonModel( | |||||
// couon_text: json['couon_text']?.toString(), | |||||
// coupon_font_color: json['coupon_font_color']?.toString(), | |||||
// coupon_bg_color: json['coupon_bg_color']?.toString(), | |||||
// coupon_bg_img: json['coupon_bg_img']?.toString(), | |||||
// is_img: json['is_img']?.toString(), | |||||
// ); | |||||
// } | |||||
// | |||||
// Map<String, dynamic> toJson() { | |||||
// final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
// data['couon_text'] = this.couon_text; | |||||
// data['coupon_font_color'] = this.coupon_font_color; | |||||
// data['coupon_bg_color'] = this.coupon_bg_color; | |||||
// data['coupon_bg_img'] = this.coupon_bg_img; | |||||
// data['is_img'] = this.is_img; | |||||
// return data; | |||||
// } | |||||
// } | |||||
// | |||||
// class HomeGoodsStyleCommissionModel { | |||||
// String commission_text; | |||||
// String commission_font_color; | |||||
// String commission_bg_color; | |||||
// String commission_bg_img; | |||||
// String is_img; | |||||
// | |||||
// HomeGoodsStyleCommissionModel({ | |||||
// this.commission_text, | |||||
// this.commission_font_color, | |||||
// this.commission_bg_color, | |||||
// this.commission_bg_img, | |||||
// this.is_img, | |||||
// }); | |||||
// | |||||
// factory HomeGoodsStyleCommissionModel.fromJson(Map<String, dynamic> json) { | |||||
// return HomeGoodsStyleCommissionModel( | |||||
// commission_text: json['commission_text']?.toString(), | |||||
// commission_font_color: json['commission_font_color']?.toString(), | |||||
// commission_bg_color: json['commission_bg_color']?.toString(), | |||||
// commission_bg_img: json['commission_bg_img']?.toString(), | |||||
// is_img: json['is_img']?.toString(), | |||||
// ); | |||||
// } | |||||
// | |||||
// Map<String, dynamic> toJson() { | |||||
// final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
// data['commission_text'] = this.commission_text; | |||||
// data['commission_font_color'] = this.commission_font_color; | |||||
// data['commission_bg_color'] = this.commission_bg_color; | |||||
// data['commission_bg_img'] = this.commission_bg_img; | |||||
// data['is_img'] = this.is_img; | |||||
// return data; | |||||
// } | |||||
// } | |||||
// | |||||
// class HomeGoodsStyleHotRankModel { | |||||
// String is_open; | |||||
// String bg_color; | |||||
// String font_color; | |||||
// String hot_sale_img; | |||||
// String buy_now_img; | |||||
// | |||||
// HomeGoodsStyleHotRankModel({ | |||||
// this.is_open, | |||||
// this.bg_color, | |||||
// this.font_color, | |||||
// this.hot_sale_img, | |||||
// this.buy_now_img, | |||||
// }); | |||||
// | |||||
// factory HomeGoodsStyleHotRankModel.fromJson(Map<String, dynamic> json) { | |||||
// return HomeGoodsStyleHotRankModel( | |||||
// is_open: json['is_open']?.toString(), | |||||
// bg_color: json['bg_color']?.toString(), | |||||
// font_color: json['font_color']?.toString(), | |||||
// hot_sale_img: json['hot_sale_img']?.toString(), | |||||
// buy_now_img: json['buy_now_img']?.toString(), | |||||
// ); | |||||
// } | |||||
// | |||||
// Map<String, dynamic> toJson() { | |||||
// final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
// data['is_open'] = this.is_open; | |||||
// data['bg_color'] = this.bg_color; | |||||
// data['font_color'] = this.font_color; | |||||
// data['hot_sale_img'] = this.hot_sale_img; | |||||
// data['buy_now_img'] = this.buy_now_img; | |||||
// return data; | |||||
// } | |||||
// } |
@@ -188,12 +188,14 @@ class _SearchInputWidgetState extends State<SearchInputWidget> { | |||||
controller: _editingController, | controller: _editingController, | ||||
focusNode: _focusNode, | focusNode: _focusNode, | ||||
cursorColor: Colors.transparent, | cursorColor: Colors.transparent, | ||||
style: TextStyle(fontSize: 14, color: HexColor.fromHex('#333333')), | |||||
style: TextStyle(fontSize: 14, color: HexColor.fromHex('#333333'), textBaseline: TextBaseline.alphabetic), | |||||
decoration: InputDecoration( | decoration: InputDecoration( | ||||
filled: false, | |||||
contentPadding: const EdgeInsets.only(left: 0, right: 0, bottom: 12, top: 0), | |||||
filled: true, | |||||
isDense: true, | |||||
contentPadding: EdgeInsets.zero, | |||||
// contentPadding: const EdgeInsets.only(left: 0, right: 0, bottom: 12, top: 0), | |||||
// focusColor: Colors.transparent, | // focusColor: Colors.transparent, | ||||
// fillColor: Colors.transparent, | |||||
fillColor: Colors.transparent, | |||||
border: InputBorder.none, | border: InputBorder.none, | ||||
focusedBorder: InputBorder.none, | focusedBorder: InputBorder.none, | ||||
focusedErrorBorder: InputBorder.none, | focusedErrorBorder: InputBorder.none, | ||||
@@ -201,7 +203,7 @@ class _SearchInputWidgetState extends State<SearchInputWidget> { | |||||
disabledBorder: InputBorder.none, | disabledBorder: InputBorder.none, | ||||
enabledBorder: InputBorder.none, | enabledBorder: InputBorder.none, | ||||
hintText: model?.search_inpu_hint_text ?? '搜索更多优惠商品', | hintText: model?.search_inpu_hint_text ?? '搜索更多优惠商品', | ||||
hintStyle: TextStyle(color: HexColor.fromHex('#999999'), fontSize: 14), | |||||
hintStyle: TextStyle(color: HexColor.fromHex('#999999'), fontSize: 14, textBaseline: TextBaseline.alphabetic), | |||||
), | ), | ||||
), | ), | ||||
); | ); | ||||
@@ -4,33 +4,37 @@ import 'package:zhiying_comm/zhiying_comm.dart'; | |||||
/// | /// | ||||
/// 我的团队 - 数据widget | /// 我的团队 - 数据widget | ||||
/// | /// | ||||
class TeamDataWidget extends StatefulWidget { | |||||
@override | |||||
_TeamDataWidgetState createState() => _TeamDataWidgetState(); | |||||
} | |||||
class _TeamDataWidgetState extends State<TeamDataWidget> { | |||||
class TeamDataWidget extends StatelessWidget { | |||||
@override | @override | ||||
Widget build(BuildContext context) { | Widget build(BuildContext context) { | ||||
return _getMainWidget(); | |||||
return Material( | |||||
child: _getMainWidget(), | |||||
); | |||||
} | } | ||||
/// 主视图 | /// 主视图 | ||||
Widget _getMainWidget() { | Widget _getMainWidget() { | ||||
return Container( | return Container( | ||||
width: double.infinity, | |||||
margin: const EdgeInsets.only(left: 12.5, right: 12.5, top: 8), | margin: const EdgeInsets.only(left: 12.5, right: 12.5, top: 8), | ||||
padding: const EdgeInsets.only(left: 10.5, right: 9.5), | |||||
padding: const EdgeInsets.only(left: 10.5, right: 9.5, top: 8, bottom: 8), | |||||
decoration: BoxDecoration(borderRadius: BorderRadius.circular(10), color: HexColor.fromHex('#FFFFFF')), | decoration: BoxDecoration(borderRadius: BorderRadius.circular(10), color: HexColor.fromHex('#FFFFFF')), | ||||
child: Column( | child: Column( | ||||
mainAxisAlignment: MainAxisAlignment.center, | |||||
crossAxisAlignment: CrossAxisAlignment.center, | |||||
children: <Widget>[ | children: <Widget>[ | ||||
/// 直推人数 & 间推人数 | /// 直推人数 & 间推人数 | ||||
Row( | Row( | ||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly, | |||||
crossAxisAlignment: CrossAxisAlignment.end, | |||||
children: <Widget>[ | children: <Widget>[ | ||||
/// 直推人数 | /// 直推人数 | ||||
_getCustomWidget(text: '直推人数', textColor: '#999999', textSize: 12, number: '2258', numberColor: '#333333', numberSize: 30, icon: 'sss'), | _getCustomWidget(text: '直推人数', textColor: '#999999', textSize: 12, number: '2258', numberColor: '#333333', numberSize: 30, icon: 'sss'), | ||||
/// 分割线 | /// 分割线 | ||||
VerticalDivider(width: 40, thickness: 0.5, color: HexColor.fromHex('#F0F0F0')), | |||||
// VerticalDivider(width: 0.5, thickness: 40, color: HexColor.fromHex('#F0F0F0')), | |||||
SizedBox(height: 40, child: VerticalDivider(thickness: 0.5, color: HexColor.fromHex('#F0F0F0'), width: 0.5, )), | |||||
/// 间推人数 | /// 间推人数 | ||||
_getCustomWidget(text: '间推人数', textColor: '#999999', textSize: 12, number: '469', numberColor: '#333333', numberSize: 30, icon: 'sss'), | _getCustomWidget(text: '间推人数', textColor: '#999999', textSize: 12, number: '469', numberColor: '#333333', numberSize: 30, icon: 'sss'), | ||||
@@ -38,10 +42,11 @@ class _TeamDataWidgetState extends State<TeamDataWidget> { | |||||
), | ), | ||||
/// 分割线 | /// 分割线 | ||||
Divider(thickness: 0.5, height: double.infinity, color: HexColor.fromHex('#F0F0F0')), | |||||
Divider(thickness: 0.5, height: 20, color: HexColor.fromHex('#F0F0F0')), | |||||
/// 全部粉丝 & 今日新增 & 昨日新增 | /// 全部粉丝 & 今日新增 & 昨日新增 | ||||
Row( | Row( | ||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly, | |||||
children: <Widget>[ | children: <Widget>[ | ||||
/// 全部粉丝 | /// 全部粉丝 | ||||
_getCustomWidget( | _getCustomWidget( | ||||
@@ -54,7 +59,8 @@ class _TeamDataWidgetState extends State<TeamDataWidget> { | |||||
), | ), | ||||
/// 分割线 | /// 分割线 | ||||
VerticalDivider(thickness: 0.5, width: 35, color: HexColor.fromHex('#F0F0F0')), | |||||
// VerticalDivider(thickness: 0.5, width: 1, color: HexColor.fromHex('#F0F0F0')), | |||||
SizedBox(height: 35, child: VerticalDivider(thickness: 0.5, color: HexColor.fromHex('#F0F0F0'), width: 0.5, )), | |||||
/// 今日新增 | /// 今日新增 | ||||
_getCustomWidget( | _getCustomWidget( | ||||
@@ -67,7 +73,8 @@ class _TeamDataWidgetState extends State<TeamDataWidget> { | |||||
), | ), | ||||
/// 分割线 | /// 分割线 | ||||
VerticalDivider(thickness: 0.5, width: 35, color: HexColor.fromHex('#F0F0F0')), | |||||
// VerticalDivider(thickness: 0.5, width: 1, color: HexColor.fromHex('#F0F0F0')), | |||||
SizedBox(height: 35, child: VerticalDivider(thickness: 0.5, color: HexColor.fromHex('#F0F0F0'), width: 0.5, )), | |||||
/// 昨日新增 | /// 昨日新增 | ||||
_getCustomWidget( | _getCustomWidget( | ||||
@@ -88,9 +95,13 @@ class _TeamDataWidgetState extends State<TeamDataWidget> { | |||||
/// 自定义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( | ||||
mainAxisAlignment: MainAxisAlignment.center, | |||||
crossAxisAlignment: CrossAxisAlignment.center, | |||||
children: <Widget>[ | children: <Widget>[ | ||||
/// Number | /// Number | ||||
Row( | Row( | ||||
crossAxisAlignment: CrossAxisAlignment.center, | |||||
mainAxisAlignment: MainAxisAlignment.center, | |||||
children: <Widget>[ | children: <Widget>[ | ||||
/// nummber\ | /// nummber\ | ||||
Text(number, | Text(number, | ||||
@@ -108,3 +119,4 @@ class _TeamDataWidgetState extends State<TeamDataWidget> { | |||||
); | ); | ||||
} | } | ||||
} | } | ||||
@@ -0,0 +1,65 @@ | |||||
import 'package:zhiying_comm/zhiying_comm.dart'; | |||||
import 'package:flutter/material.dart'; | |||||
class TeamDetailsMonthDataWidget extends StatelessWidget { | |||||
@override | |||||
Widget build(BuildContext context) { | |||||
return Container(); | |||||
} | |||||
/// content | |||||
Widget _getContentWidget() { | |||||
return Container( | |||||
decoration: BoxDecoration( | |||||
color: HexColor.fromHex('#FFFFFF'), | |||||
borderRadius: BorderRadius.circular(10), | |||||
), | |||||
padding: const EdgeInsets.only(top: 31, bottom: 10), | |||||
child: Row( | |||||
children: <Widget>[ | |||||
/// 今日贡献 | |||||
_getLeftValueWidget(), | |||||
/// 分割线 | |||||
VerticalDivider(width: 19, thickness: 0.5, color: HexColor.fromHex('#D8D8D8')), | |||||
/// 贡献收入 | |||||
_getRightValueWidget(), | |||||
], | |||||
), | |||||
); | |||||
} | |||||
/// 左边 | |||||
Widget _getLeftValueWidget() { | |||||
return _getCustomWidget(text: '自购订单(个)', textColor: '#999999', textSize: 11, number: '158.58', numberColor: '#333333', numberSize: 17, icon: 'sss'); | |||||
} | |||||
/// 右边 | |||||
Widget _getRightValueWidget() { | |||||
return _getCustomWidget(text: '预估收益(元)', textColor: '#999999', textSize: 11, number: '158.58', numberColor: '#333333', numberSize: 17, icon: 'sss'); | |||||
} | |||||
/// 自定义Widget | |||||
Widget _getCustomWidget({String text, String textColor, double textSize, String number, String numberColor, double numberSize, String icon}) { | |||||
return Column( | |||||
children: <Widget>[ | |||||
/// number | |||||
Text(number, style: TextStyle(color: HexColor.fromHex(numberColor), fontSize: numberSize, fontWeight: FontWeight.bold)), | |||||
/// text | |||||
Row( | |||||
children: <Widget>[ | |||||
Text(text, style: TextStyle(color: HexColor.fromHex(textColor), fontSize: textSize)), | |||||
/// icon | |||||
Visibility(visible: !EmptyUtil.isEmpty(icon), child: Container(width: 11, height: 11, color: Colors.red)) | |||||
], | |||||
) | |||||
], | |||||
); | |||||
} | |||||
} |
@@ -12,35 +12,208 @@ class TeamFansItem extends StatefulWidget { | |||||
class _TeamFansItemState extends State<TeamFansItem> { | class _TeamFansItemState extends State<TeamFansItem> { | ||||
@override | @override | ||||
Widget build(BuildContext context) { | Widget build(BuildContext context) { | ||||
return Container(); | |||||
return _getMainWidget(); | |||||
} | } | ||||
/// 主体视图 | /// 主体视图 | ||||
Widget _getMainWidget() { | Widget _getMainWidget() { | ||||
return Container( | return Container( | ||||
decoration: BoxDecoration( | |||||
color: HexColor.fromHex('#FFFFFF'), | |||||
borderRadius: BorderRadius.circular(10) | |||||
), | |||||
decoration: BoxDecoration(color: HexColor.fromHex('#FFFFFF'), borderRadius: BorderRadius.circular(10)), | |||||
margin: const EdgeInsets.only(left: 12.5, right: 12.5), | margin: const EdgeInsets.only(left: 12.5, right: 12.5), | ||||
padding: const EdgeInsets.only(left: 20, right: 20, top: 17.5, bottom: 15), | padding: const EdgeInsets.only(left: 20, right: 20, top: 17.5, bottom: 15), | ||||
child: Column( | child: Column( | ||||
children: <Widget>[ | children: <Widget>[ | ||||
// 粉丝头像信息等 | |||||
_getFansInfoWidget(), | |||||
// 微信号码 | |||||
_getWXNumberInfoWidget(), | |||||
// 数据信息 | |||||
_getDataWidget(), | |||||
], | ], | ||||
), | ), | ||||
); | ); | ||||
} | } | ||||
/// 粉丝头像信息等 | /// 粉丝头像信息等 | ||||
Widget _getFansInfoWidget() { | Widget _getFansInfoWidget() { | ||||
return Row( | |||||
children: <Widget>[ | |||||
/// 头像 | |||||
Container(width: 50, height: 50, color: Colors.red), | |||||
const SizedBox(width: 10), | |||||
/// 信息 | |||||
Column( | |||||
children: <Widget>[ | |||||
/// 会员等级 关系 昵称 | |||||
RichText( | |||||
text: TextSpan(text: '', children: [ | |||||
/// 等级 | |||||
WidgetSpan(child: Container(width: 37, height: 13, color: Colors.red)), | |||||
/// 会员关系 | |||||
WidgetSpan(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)) | |||||
]), | |||||
), | |||||
/// 手机号码 | |||||
RichText( | |||||
text: TextSpan(text: '', 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')), | |||||
/// 复制按钮 | |||||
WidgetSpan(child: Container(width: 11, height: 11, color: Colors.red, margin: const EdgeInsets.only(left: 3))) | |||||
]), | |||||
), | |||||
], | |||||
) | |||||
], | |||||
); | |||||
} | |||||
/// 微信号码信息 | |||||
Widget _getWXNumberInfoWidget() { | |||||
return Container( | |||||
padding: const EdgeInsets.only(left: 9, right: 10, bottom: 6.5, top: 6.5), | |||||
decoration: BoxDecoration( | |||||
color: HexColor.fromHex('#F7F7F7'), | |||||
borderRadius: BorderRadius.circular(10), | |||||
), | |||||
child: Row( | |||||
mainAxisAlignment: MainAxisAlignment.spaceBetween, | |||||
children: <Widget>[ | |||||
/// 微信号码 | |||||
RichText( | |||||
text: TextSpan(text: '微信号:', style: TextStyle(color: HexColor.fromHex('#999999'), fontSize: 11, fontWeight: FontWeight.bold), children: [ | |||||
TextSpan( | |||||
text: '54A78', | |||||
style: TextStyle(fontWeight: FontWeight.bold, color: HexColor.fromHex('#333333'), fontSize: 11, fontFamily: 'Din', package: 'zhiying_base_widget')), | |||||
WidgetSpan(child: Container(margin: const EdgeInsets.only(left: 5.5), color: Colors.red, width: 11, height: 11)) | |||||
]), | |||||
), | |||||
/// 最近登陆时间 | |||||
Text('最近登陆 2019-06-28', style: TextStyle(color: HexColor.fromHex('#909090'), fontSize: 11, fontFamily: 'Din', package: 'zhiying_base_widget')) | |||||
], | |||||
), | |||||
); | |||||
} | } | ||||
/// 数据信息 | /// 数据信息 | ||||
Widget _getDataWidget() { | Widget _getDataWidget() { | ||||
return Row( | |||||
children: <Widget>[ | |||||
/// 左边数据 | |||||
Column( | |||||
children: <Widget>[ | |||||
/// 邀请人数(人) | |||||
_getCustomWidget( | |||||
text: '邀请人数(人)', | |||||
textColor: '#333333', | |||||
textSize: 10, | |||||
number: '1578', | |||||
numberColor: '#FF4242', | |||||
numberSize: 20, | |||||
), | |||||
/// 今日邀请 & 本月邀请 | |||||
Row( | |||||
children: <Widget>[ | |||||
/// 今日邀请 | |||||
_getCustomWidget( | |||||
text: '今日邀请', | |||||
textColor: '#909090', | |||||
textSize: 10, | |||||
number: '3258', | |||||
numberColor: '#333333', | |||||
numberSize: 15, | |||||
), | |||||
/// 本月邀请 | |||||
_getCustomWidget( | |||||
text: '本月邀请', | |||||
textColor: '#909090', | |||||
textSize: 10, | |||||
number: '3258', | |||||
numberColor: '#333333', | |||||
numberSize: 15, | |||||
), | |||||
], | |||||
) | |||||
], | |||||
), | |||||
/// 分割线 | |||||
VerticalDivider(width: 65.5, thickness: 0.5), | |||||
/// 右边数据 | |||||
Column( | |||||
children: <Widget>[ | |||||
/// 累计收益(¥) | |||||
_getCustomWidget( | |||||
text: '累计收益(¥)', | |||||
textColor: '#333333', | |||||
textSize: 10, | |||||
number: '157.54', | |||||
numberColor: '#FF4242', | |||||
numberSize: 20, | |||||
), | |||||
/// 近7天收益 & 本月收益 | |||||
Row( | |||||
children: <Widget>[ | |||||
/// 今日邀请 | |||||
_getCustomWidget( | |||||
text: '近7天收益', | |||||
textColor: '#909090', | |||||
textSize: 10, | |||||
number: '4.12', | |||||
numberColor: '#333333', | |||||
numberSize: 15, | |||||
), | |||||
/// 本月邀请 | |||||
_getCustomWidget( | |||||
text: '本月收益', | |||||
textColor: '#909090', | |||||
textSize: 10, | |||||
number: '528.14', | |||||
numberColor: '#333333', | |||||
numberSize: 15, | |||||
), | |||||
], | |||||
) | |||||
], | |||||
) | |||||
], | |||||
); | |||||
} | } | ||||
/// 自定义Widget(数字加粗) | |||||
Widget _getCustomWidget({String text, String textColor, double textSize, String number, String numberColor, double numberSize, String icon}) { | |||||
return Column( | |||||
children: <Widget>[ | |||||
/// Number | |||||
Row( | |||||
children: <Widget>[ | |||||
/// nummber\ | |||||
Text(number, | |||||
style: TextStyle(color: HexColor.fromHex(numberColor), fontSize: numberSize, fontWeight: FontWeight.bold, fontFamily: 'Din', package: 'zhiying_base_widget')), | |||||
const SizedBox(width: 3), | |||||
/// icon | |||||
Visibility(visible: !EmptyUtil.isEmpty(icon), child: Container(height: 7, width: 5, color: Colors.red)) | |||||
], | |||||
), | |||||
/// Text | |||||
Text(text, style: TextStyle(color: HexColor.fromHex(textColor), fontSize: textSize)) | |||||
], | |||||
); | |||||
} | |||||
} | } |
@@ -5,9 +5,9 @@ import 'package:zhiying_comm/zhiying_comm.dart'; | |||||
/// 我的团队 - 我的推荐人 | /// 我的团队 - 我的推荐人 | ||||
/// | /// | ||||
class TeamRecommendWidget extends StatefulWidget { | class TeamRecommendWidget extends StatefulWidget { | ||||
final Map<String, dynamic> data; | |||||
const TeamRecommendWidget(this.data); | |||||
// final Map<String, dynamic> data; | |||||
// | |||||
// const TeamRecommendWidget(this.data); | |||||
@override | @override | ||||
_TeamRecommendWidgetState createState() => _TeamRecommendWidgetState(); | _TeamRecommendWidgetState createState() => _TeamRecommendWidgetState(); | ||||
@@ -16,7 +16,10 @@ class TeamRecommendWidget extends StatefulWidget { | |||||
class _TeamRecommendWidgetState extends State<TeamRecommendWidget> { | class _TeamRecommendWidgetState extends State<TeamRecommendWidget> { | ||||
@override | @override | ||||
Widget build(BuildContext context) { | Widget build(BuildContext context) { | ||||
return Container(); | |||||
return Container( | |||||
margin: const EdgeInsets.only(left: 12.5, right: 12.5, top: 10.5), | |||||
child: _getMainWidget(), | |||||
); | |||||
} | } | ||||
/// 按钮点击事件 | /// 按钮点击事件 | ||||
@@ -25,12 +28,21 @@ class _TeamRecommendWidgetState extends State<TeamRecommendWidget> { | |||||
/// 主体Widget | /// 主体Widget | ||||
Widget _getMainWidget() { | Widget _getMainWidget() { | ||||
return Container( | return Container( | ||||
padding: const EdgeInsets.only(left: 10, bottom: 12, right: 10), | |||||
decoration: BoxDecoration(borderRadius: BorderRadius.circular(10), color: Colors.white), | decoration: BoxDecoration(borderRadius: BorderRadius.circular(10), color: Colors.white), | ||||
child: Column( | child: Column( | ||||
crossAxisAlignment: CrossAxisAlignment.start, | |||||
children: <Widget>[ | children: <Widget>[ | ||||
/// 左上角的Icon | /// 左上角的Icon | ||||
_getLeftTopWidget(), | |||||
const SizedBox(height: 6), | |||||
/// 数据视图 | /// 数据视图 | ||||
Visibility( | |||||
visible: true, | |||||
replacement: _getInputCombWidget(), | |||||
child: Padding(padding: const EdgeInsets.only(left: 10), child: _getDataWidget())), | |||||
], | ], | ||||
), | ), | ||||
); | ); | ||||
@@ -38,38 +50,36 @@ class _TeamRecommendWidgetState extends State<TeamRecommendWidget> { | |||||
/// 我的推荐人IconWidget(左上角的ICON) | /// 我的推荐人IconWidget(左上角的ICON) | ||||
Widget _getLeftTopWidget() { | Widget _getLeftTopWidget() { | ||||
return Container(width: 73.5, height: 23.5, color: Colors.red); | |||||
return Transform.translate(offset: Offset(0, -4.5), child: Container(width: 80, height: 28, color: Colors.red)); | |||||
} | } | ||||
/// 输入框 | |||||
Widget _getInputWidget() { | |||||
/// 没邀请人的Widget | |||||
Widget _getInputCombWidget() { | |||||
return Container( | return Container( | ||||
decoration: BoxDecoration( | |||||
borderRadius: BorderRadius.circular(30), | |||||
color: HexColor.fromHex('#F7F7F7'), | |||||
), | |||||
margin: const EdgeInsets.only(left: 2.5, right: 2.5), | |||||
width: double.infinity, | |||||
child: Column( | child: Column( | ||||
mainAxisAlignment: MainAxisAlignment.center, | |||||
// crossAxisAlignment: CrossAxisAlignment.center, | |||||
children: <Widget>[ | children: <Widget>[ | ||||
/// 输入框 | /// 输入框 | ||||
Row( | |||||
children: <Widget>[ | |||||
/// 输入框 | |||||
Expanded( | |||||
child: TextField( | |||||
decoration: InputDecoration( | |||||
border: InputBorder.none, | |||||
focusedBorder: InputBorder.none, | |||||
focusedErrorBorder: InputBorder.none, | |||||
errorBorder: InputBorder.none, | |||||
disabledBorder: InputBorder.none, | |||||
enabledBorder: InputBorder.none, | |||||
filled: true, | |||||
fillColor: Colors.transparent), | |||||
Container( | |||||
height: 30, | |||||
width: double.infinity, | |||||
decoration: BoxDecoration( | |||||
borderRadius: BorderRadius.circular(30), | |||||
color: HexColor.fromHex('#F7F7F7'), | |||||
), | |||||
padding: const EdgeInsets.only(top: 3.5, bottom: 3.5, right: 3, left: 13), | |||||
child: Row( | |||||
children: <Widget>[ | |||||
Expanded( | |||||
child: _getInputWidget(), | |||||
), | ), | ||||
), | |||||
/// 按钮 | |||||
_getAddButtomWidget(), | |||||
], | |||||
/// 添加的按钮 | |||||
_getAddButtomWidget(), | |||||
], | |||||
), | |||||
), | ), | ||||
const SizedBox(height: 10.5), | const SizedBox(height: 10.5), | ||||
@@ -81,22 +91,60 @@ class _TeamRecommendWidgetState extends State<TeamRecommendWidget> { | |||||
); | ); | ||||
} | } | ||||
/// 输入框的 | |||||
Widget _getInputWidget(){ | |||||
return TextField( | |||||
style:TextStyle(color: HexColor.fromHex('#000000'), fontSize: 12, textBaseline: TextBaseline.alphabetic), | |||||
decoration: InputDecoration( | |||||
border: InputBorder.none, | |||||
enabledBorder: InputBorder.none, | |||||
disabledBorder: InputBorder.none, | |||||
errorBorder: InputBorder.none, | |||||
focusedErrorBorder: InputBorder.none, | |||||
focusedBorder: InputBorder.none, | |||||
hintText: '输入邀请人ID', | |||||
isDense: true, | |||||
filled: true, | |||||
fillColor: Colors.transparent, | |||||
contentPadding: EdgeInsets.zero, | |||||
hintStyle: TextStyle(color: HexColor.fromHex('#909090'), fontSize: 12, textBaseline: TextBaseline.alphabetic), | |||||
), | |||||
); | |||||
} | |||||
/// 添加的按钮 | /// 添加的按钮 | ||||
Widget _getAddButtomWidget() { | Widget _getAddButtomWidget() { | ||||
// return Material( | |||||
// child: Container( | |||||
// height: 24, | |||||
// color: Colors.white, | |||||
// child: RaisedButton( | |||||
// padding: EdgeInsets.zero, | |||||
// child: Text('添加', style: TextStyle(fontSize: 13)), | |||||
// textColor: HexColor.fromHex('#FFFFFF'), | |||||
// color: HexColor.fromHex('#F94B47'), | |||||
// disabledColor: HexColor.fromHex('#F94B47'), | |||||
// disabledTextColor: HexColor.fromHex('#FFFFFF'), | |||||
// elevation: 5, | |||||
// shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(24 / 2)), | |||||
// onPressed: () => _onClickListener(), | |||||
// ), | |||||
// ), | |||||
// ); | |||||
return Material( | return Material( | ||||
child: Container( | |||||
height: 24, | |||||
width: double.infinity, | |||||
color: Colors.white, | |||||
child: RaisedButton( | |||||
child: Text('添加', style: TextStyle(fontSize: 13)), | |||||
textColor: HexColor.fromHex('#FFFFFF'), | |||||
color: HexColor.fromHex('#F94B47'), | |||||
disabledColor: HexColor.fromHex('#F94B47'), | |||||
disabledTextColor: HexColor.fromHex('#FFFFFF'), | |||||
elevation: 5, | |||||
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(24 / 2)), | |||||
onPressed: () => _onClickListener(), | |||||
child: InkWell( | |||||
onTap: (){}, | |||||
child: Container( | |||||
padding: const EdgeInsets.only(left: 21, right: 21, top: 2.5, bottom: 2.5), | |||||
decoration: BoxDecoration( | |||||
borderRadius: BorderRadius.circular(30), | |||||
color: HexColor.fromHex('#F94B47') | |||||
), | |||||
child: Text('添加', style: TextStyle(fontSize: 13, color: HexColor.fromHex('#FFFFFF'))), | |||||
), | ), | ||||
), | ), | ||||
); | ); | ||||
@@ -105,6 +153,7 @@ class _TeamRecommendWidgetState extends State<TeamRecommendWidget> { | |||||
/// 数据视图 | /// 数据视图 | ||||
Widget _getDataWidget() { | Widget _getDataWidget() { | ||||
return Row( | return Row( | ||||
mainAxisAlignment: MainAxisAlignment.start, | |||||
children: <Widget>[ | children: <Widget>[ | ||||
/// 头像widget | /// 头像widget | ||||
_getAvatarWidget(), | _getAvatarWidget(), | ||||
@@ -128,29 +177,45 @@ class _TeamRecommendWidgetState extends State<TeamRecommendWidget> { | |||||
/// 数据右边视图,头像右边的widget | /// 数据右边视图,头像右边的widget | ||||
Widget _getDataRightWidget() { | Widget _getDataRightWidget() { | ||||
return Column( | |||||
children: <Widget>[ | |||||
/// 昵称 | |||||
_getNickNameWidget(), | |||||
return SizedBox( | |||||
height: 55, | |||||
child: Column( | |||||
crossAxisAlignment: CrossAxisAlignment.start, | |||||
mainAxisAlignment: MainAxisAlignment.spaceBetween, | |||||
children: <Widget>[ | |||||
/// 昵称 | |||||
_getNickNameWidget(), | |||||
/// 手机号 | |||||
_getPhoneNumberWidget(), | |||||
/// 手机号 | |||||
_getPhoneNumberWidget(), | |||||
/// 微信号 | |||||
_getWXWidget() | |||||
], | |||||
/// 微信号 | |||||
_getWXWidget() | |||||
], | |||||
), | |||||
); | ); | ||||
} | } | ||||
/// 昵称 | /// 昵称 | ||||
Widget _getNickNameWidget() { | Widget _getNickNameWidget() { | ||||
// return RichText( | |||||
// text: TextSpan(text: '毛毛虫', style: TextStyle(fontSize: 14, color: HexColor.fromHex('#000000'), fontWeight: FontWeight.bold), | |||||
// children: [ | |||||
// TextSpan(text: '邀请码:', style: TextStyle(fontSize: 11, color: HexColor.fromHex('#909090'), fontWeight: FontWeight.w400)), | |||||
// TextSpan(text: '123456', style: TextStyle(fontSize: 11, color: HexColor.fromHex('#909090'), fontWeight: FontWeight.w400)), | |||||
// ] | |||||
// ), | |||||
// ); | |||||
return Row( | return Row( | ||||
mainAxisAlignment: MainAxisAlignment.start, | |||||
crossAxisAlignment: CrossAxisAlignment.center, | |||||
children: <Widget>[ | children: <Widget>[ | ||||
/// 昵称 | /// 昵称 | ||||
Text('毛毛虫', style: TextStyle(fontSize: 14, color: HexColor.fromHex('#000000'), fontWeight: FontWeight.bold)), | Text('毛毛虫', style: TextStyle(fontSize: 14, color: HexColor.fromHex('#000000'), fontWeight: FontWeight.bold)), | ||||
const SizedBox(width: 6), | const SizedBox(width: 6), | ||||
Text('邀请码:', style: TextStyle(fontSize: 11, color: HexColor.fromHex('#909090'))), | Text('邀请码:', style: TextStyle(fontSize: 11, color: HexColor.fromHex('#909090'))), | ||||
Text('123456', style: TextStyle(fontSize: 11, color: HexColor.fromHex('#909090'))), | |||||
Text('123456', style: TextStyle(fontSize: 11, color: HexColor.fromHex('#909090'), fontFamily: 'Din', package: 'zhiying_base_widget')), | |||||
], | ], | ||||
); | ); | ||||
} | } | ||||
@@ -160,7 +225,7 @@ class _TeamRecommendWidgetState extends State<TeamRecommendWidget> { | |||||
return Row( | return Row( | ||||
children: <Widget>[ | children: <Widget>[ | ||||
Text('手机号:', style: TextStyle(fontSize: 11, color: HexColor.fromHex('#AFAFAF'))), | Text('手机号:', style: TextStyle(fontSize: 11, color: HexColor.fromHex('#AFAFAF'))), | ||||
Text('12354678910', style: TextStyle(fontSize: 11, color: HexColor.fromHex('#AFAFAF'))), | |||||
Text('12354678910', style: TextStyle(fontSize: 11, color: HexColor.fromHex('#AFAFAF'), fontFamily: 'Din', package: 'zhiying_base_widget')), | |||||
const SizedBox(width: 6), | const SizedBox(width: 6), | ||||
/// 拷贝按钮 | /// 拷贝按钮 | ||||
@@ -174,7 +239,7 @@ class _TeamRecommendWidgetState extends State<TeamRecommendWidget> { | |||||
return Row( | return Row( | ||||
children: <Widget>[ | children: <Widget>[ | ||||
Text('微信号:', style: TextStyle(fontSize: 11, color: HexColor.fromHex('#AFAFAF'))), | Text('微信号:', style: TextStyle(fontSize: 11, color: HexColor.fromHex('#AFAFAF'))), | ||||
Text('12354678910', style: TextStyle(fontSize: 11, color: HexColor.fromHex('#AFAFAF'))), | |||||
Text('12354678910', style: TextStyle(fontSize: 11, color: HexColor.fromHex('#AFAFAF'), fontFamily: 'Din', package: 'zhiying_base_widget')), | |||||
const SizedBox(width: 6), | const SizedBox(width: 6), | ||||
/// 拷贝按钮 | /// 拷贝按钮 | ||||