You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
165 lines
4.9 KiB
165 lines
4.9 KiB
import 'package:flutter/material.dart'; |
|
import 'package:huixiang/generated/l10n.dart'; |
|
import 'package:huixiang/retrofit/data/goods_category.dart'; |
|
import 'package:huixiang/utils/font_weight.dart'; |
|
import 'package:flutter_screenutil/flutter_screenutil.dart'; |
|
import 'package:huixiang/view_widget/item_title.dart'; |
|
import 'package:huixiang/view_widget/my_tab.dart'; |
|
|
|
class PointsGoodsTitle extends StatefulWidget { |
|
final ValueChanged<int> onTap; |
|
final Function(int orderType, bool orderDesc) sortChange; |
|
final List<GoodsCategory> gooodsCategorys; |
|
|
|
PointsGoodsTitle( |
|
this.gooodsCategorys, |
|
this.sortChange, |
|
this.onTap, |
|
); |
|
|
|
@override |
|
State<StatefulWidget> createState() { |
|
return _PointsGoodsTitle(); |
|
} |
|
} |
|
|
|
class _PointsGoodsTitle extends State<PointsGoodsTitle> { |
|
var _itemText = S.current.morenpaixu; |
|
List<String> sortString = [ |
|
S.current.morenpaixu, |
|
S.current.jifengaodaodi, |
|
S.current.jifendidaogao, |
|
]; |
|
|
|
@override |
|
void initState() { |
|
super.initState(); |
|
} |
|
|
|
@override |
|
Widget build(BuildContext context) { |
|
return Column( |
|
mainAxisAlignment: MainAxisAlignment.start, |
|
crossAxisAlignment: CrossAxisAlignment.start, |
|
children: [ |
|
// ItemTitle( |
|
// text: S.of(context).jifenshangcheng, |
|
// imgPath: "assets/image/icon_points_mall.webp", |
|
// ), |
|
ItemTitle( |
|
text: S.of(context).jifenshangcheng, |
|
imgPath: "assets/image/icon_points_mall.webp", |
|
moreText: _itemText, |
|
moreType: 1, |
|
items: sortString |
|
.map( |
|
(e) => DropdownMenuItem( |
|
value: e, |
|
child: Text( |
|
e, |
|
style: TextStyle( |
|
fontSize: 12.sp, |
|
fontWeight: MyFontWeight.medium, |
|
color: Color(0xff353535), |
|
), |
|
), |
|
), |
|
) |
|
.toList(), |
|
onChanged: _sortChange, |
|
), |
|
Container( |
|
alignment: Alignment.centerLeft, |
|
child: DefaultTabController( |
|
length: widget.gooodsCategorys == null |
|
? 0 |
|
: widget.gooodsCategorys.length, |
|
child: TabBar( |
|
isScrollable: true, |
|
//可滚动 |
|
indicatorColor: Color(0xff39B54A), |
|
labelColor: Color(0xff32A060), |
|
labelStyle: TextStyle( |
|
fontSize: 14.sp, |
|
fontWeight: FontWeight.bold, |
|
), |
|
unselectedLabelStyle: TextStyle( |
|
fontSize: 14.sp, |
|
fontWeight: MyFontWeight.regular, |
|
), |
|
// controller: tabController, |
|
//未选中文字颜色 |
|
unselectedLabelColor: Color(0xff4D4D4D), |
|
indicatorSize: TabBarIndicatorSize.label, |
|
//指示器与文字等宽 |
|
tabs: widget.gooodsCategorys == null |
|
? [] |
|
: widget.gooodsCategorys |
|
.map((e) => MyTab(text: e.name)) |
|
.toList(), |
|
onTap: widget.onTap, |
|
), |
|
), |
|
), |
|
// Container( |
|
// width: 124.w, |
|
// height: 32.h, |
|
// margin: EdgeInsets.only(left: 20.w, top: 10), |
|
// color: Colors.white, |
|
// child: Stack( |
|
// alignment: Alignment.center, |
|
// children: [ |
|
// Container( |
|
// width: 104.w, |
|
// height: 32.h, |
|
// color: Colors.white, |
|
// ), |
|
// Container( |
|
// padding: EdgeInsets.symmetric(horizontal: 10.w), |
|
// child: DropdownButton( |
|
// items: sortString |
|
// .map( |
|
// (e) => DropdownMenuItem( |
|
// value: e, |
|
// child: Text( |
|
// e, |
|
// style: TextStyle( |
|
// fontSize: 12.sp, |
|
// fontWeight: MyFontWeight.medium, |
|
// color: Color(0xff353535), |
|
// ), |
|
// ), |
|
// ), |
|
// ) |
|
// .toList(), |
|
// value: _itemText, |
|
// itemHeight: 50, |
|
// onChanged: _sortChange, |
|
// style: TextStyle(), |
|
// ), |
|
// ), |
|
// ], |
|
// ), |
|
// ), |
|
], |
|
); |
|
} |
|
|
|
_sortChange(item) { |
|
var index = sortString.indexOf(item); |
|
switch (index) { |
|
case 0: |
|
widget.sortChange(1, true); |
|
break; |
|
case 1: |
|
widget.sortChange(3, true); |
|
break; |
|
case 2: |
|
widget.sortChange(3, false); |
|
break; |
|
} |
|
setState(() { |
|
_itemText = item; |
|
}); |
|
} |
|
}
|
|
|