Skip to content

Commit c4a43f2

Browse files
committed
调整控件,修复搜索排序按键问题
1 parent 620e944 commit c4a43f2

File tree

5 files changed

+77
-145
lines changed

5 files changed

+77
-145
lines changed

lib/widget/GSYInputWidget.dart

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,34 +17,23 @@ class GSYInputWidget extends StatefulWidget {
1717
GSYInputWidget({Key key, this.hintText, this.iconData, this.onChanged, this.textStyle, this.controller, this.obscureText = false}) : super(key: key);
1818

1919
@override
20-
_GSYInputWidgetState createState() => new _GSYInputWidgetState(hintText, iconData, onChanged, textStyle, controller, obscureText);
20+
_GSYInputWidgetState createState() => new _GSYInputWidgetState();
2121
}
2222

2323
/// State for [GSYInputWidget] widgets.
2424
class _GSYInputWidgetState extends State<GSYInputWidget> {
25-
final bool obscureText;
26-
27-
final String hintText;
28-
29-
final IconData iconData;
30-
31-
final ValueChanged<String> onChanged;
32-
33-
final TextStyle textStyle;
34-
35-
final TextEditingController controller;
3625

37-
_GSYInputWidgetState(this.hintText, this.iconData, this.onChanged, this.textStyle, this.controller, this.obscureText) : super();
26+
_GSYInputWidgetState() : super();
3827

3928
@override
4029
Widget build(BuildContext context) {
4130
return new TextField(
42-
controller: controller,
43-
onChanged: onChanged,
44-
obscureText: obscureText,
31+
controller: widget.controller,
32+
onChanged: widget.onChanged,
33+
obscureText: widget.obscureText,
4534
decoration: new InputDecoration(
46-
hintText: hintText,
47-
icon: iconData == null ? null : new Icon(iconData),
35+
hintText: widget.hintText,
36+
icon: widget.iconData == null ? null : new Icon(widget.iconData),
4837
),
4938
);
5039
}

lib/widget/GSYSearchDrawer.dart

Lines changed: 34 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,11 @@ class GSYSearchDrawer extends StatefulWidget {
1818
GSYSearchDrawer(this.typeCallback, this.sortCallback, this.languageCallback);
1919

2020
@override
21-
_GSYSearchDrawerState createState() => _GSYSearchDrawerState(this.typeCallback, this.sortCallback, this.languageCallback);
21+
_GSYSearchDrawerState createState() => _GSYSearchDrawerState();
2222
}
2323

2424
class _GSYSearchDrawerState extends State<GSYSearchDrawer> {
25-
final SearchSelectItemChanged<String> typeCallback;
26-
final SearchSelectItemChanged<String> sortCallback;
27-
final SearchSelectItemChanged<String> languageCallback;
28-
29-
_GSYSearchDrawerState(this.typeCallback, this.sortCallback, this.languageCallback);
25+
_GSYSearchDrawerState();
3026

3127
final double itemWidth = 200.0;
3228

@@ -54,20 +50,20 @@ class _GSYSearchDrawerState extends State<GSYSearchDrawer> {
5450
list.add(_renderTitle(CommonUtils.getLocale(context).search_type));
5551
for (int i = 0; i < searchFilterType.length; i++) {
5652
FilterModel model = searchFilterType[i];
57-
list.add(_renderItem(model, searchFilterType, i, this.typeCallback));
53+
list.add(_renderItem(model, searchFilterType, i, widget.typeCallback));
5854
list.add(_renderDivider());
5955
}
6056
list.add(_renderTitle(CommonUtils.getLocale(context).search_type));
6157

6258
for (int i = 0; i < sortType.length; i++) {
6359
FilterModel model = sortType[i];
64-
list.add(_renderItem(model, sortType, i, this.sortCallback));
60+
list.add(_renderItem(model, sortType, i, widget.sortCallback));
6561
list.add(_renderDivider());
6662
}
6763
list.add(_renderTitle(CommonUtils.getLocale(context).search_language));
6864
for (int i = 0; i < searchLanguageType.length; i++) {
6965
FilterModel model = searchLanguageType[i];
70-
list.add(_renderItem(model, searchLanguageType, i, this.languageCallback));
66+
list.add(_renderItem(model, searchLanguageType, i, widget.languageCallback));
7167
list.add(_renderDivider());
7268
}
7369
return list;
@@ -97,30 +93,37 @@ class _GSYSearchDrawerState extends State<GSYSearchDrawer> {
9793
}
9894

9995
_renderItem(FilterModel model, List<FilterModel> list, int index, SearchSelectItemChanged<String> select) {
100-
return new Container(
101-
height: 50.0,
102-
child: new FlatButton(
103-
onPressed: () {
104-
setState(() {
105-
for (FilterModel model in list) {
106-
model.select = false;
107-
}
108-
list[index].select = true;
109-
});
110-
select?.call(model.value);
111-
},
112-
child: new Container(
113-
width: itemWidth,
114-
child: new Row(
115-
mainAxisSize: MainAxisSize.min,
116-
crossAxisAlignment: CrossAxisAlignment.start,
117-
children: <Widget>[
118-
new Center(child: new Checkbox(value: model.select, onChanged: (value) {})),
119-
new Center(child: Text(model.name)),
120-
],
96+
return new Stack(
97+
children: <Widget>[
98+
new Container(
99+
height: 50.0,
100+
child: new Container(
101+
width: itemWidth,
102+
child: new Row(
103+
mainAxisSize: MainAxisSize.min,
104+
crossAxisAlignment: CrossAxisAlignment.start,
105+
children: <Widget>[
106+
new Center(child: new Checkbox(value: model.select, onChanged: (value) {})),
107+
new Center(child: Text(model.name)),
108+
],
109+
),
121110
),
122111
),
123-
),
112+
new FlatButton(
113+
onPressed: () {
114+
setState(() {
115+
for (FilterModel model in list) {
116+
model.select = false;
117+
}
118+
list[index].select = true;
119+
});
120+
select?.call(model.value);
121+
},
122+
child: new Container(
123+
width: itemWidth,
124+
),
125+
)
126+
],
124127
);
125128
}
126129
}

lib/widget/GSYSelectItemWidget.dart

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class GSYSelectItemWidget extends StatefulWidget implements PreferredSizeWidget
3030
});
3131

3232
@override
33-
_GSYSelectItemWidgetState createState() => _GSYSelectItemWidgetState(selectItemChanged, itemNames, elevation, margin);
33+
_GSYSelectItemWidgetState createState() => _GSYSelectItemWidgetState();
3434

3535
@override
3636
Size get preferredSize {
@@ -41,15 +41,7 @@ class GSYSelectItemWidget extends StatefulWidget implements PreferredSizeWidget
4141
class _GSYSelectItemWidgetState extends State<GSYSelectItemWidget> {
4242
int selectIndex = 0;
4343

44-
final List<String> itemNames;
45-
46-
final SelectItemChanged selectItemChanged;
47-
48-
final double elevation;
49-
50-
final EdgeInsets margin;
51-
52-
_GSYSelectItemWidgetState(this.selectItemChanged, this.itemNames, this.elevation, this.margin);
44+
_GSYSelectItemWidgetState();
5345

5446
_renderItem(String name, int index) {
5547
var style = index == selectIndex ? GSYConstant.middleTextWhite : GSYConstant.middleSubLightText;
@@ -65,7 +57,7 @@ class _GSYSelectItemWidgetState extends State<GSYSelectItemWidget> {
6557
),
6658
onPressed: () {
6759
if (selectIndex != index) {
68-
selectItemChanged?.call(index);
60+
widget.selectItemChanged?.call(index);
6961
}
7062
setState(() {
7163
selectIndex = index;
@@ -76,11 +68,11 @@ class _GSYSelectItemWidgetState extends State<GSYSelectItemWidget> {
7668

7769
_renderList() {
7870
List<Widget> list = new List();
79-
for (int i = 0; i < itemNames.length; i++) {
80-
if (i == itemNames.length - 1) {
81-
list.add(_renderItem(itemNames[i], i));
71+
for (int i = 0; i < widget.itemNames.length; i++) {
72+
if (i == widget.itemNames.length - 1) {
73+
list.add(_renderItem(widget.itemNames[i], i));
8274
} else {
83-
list.add(_renderItem(itemNames[i], i));
75+
list.add(_renderItem(widget.itemNames[i], i));
8476
list.add(new Container(width: 1.0, height: 25.0, color: Color(GSYColors.subLightTextColor)));
8577
}
8678
}
@@ -90,8 +82,8 @@ class _GSYSelectItemWidgetState extends State<GSYSelectItemWidget> {
9082
@override
9183
Widget build(BuildContext context) {
9284
return new GSYCardItem(
93-
elevation: elevation,
94-
margin: margin,
85+
elevation: widget.elevation,
86+
margin: widget.margin,
9587
color: Theme.of(context).primaryColor,
9688
shape: new RoundedRectangleBorder(
9789
borderRadius: BorderRadius.all(Radius.circular(4.0)),

lib/widget/GSYTabBarWidget.dart

Lines changed: 14 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -47,50 +47,13 @@ class GSYTabBarWidget extends StatefulWidget {
4747
}) : super(key: key);
4848

4949
@override
50-
_GSYTabBarState createState() => new _GSYTabBarState(
51-
type,
52-
tabViews,
53-
indicatorColor,
54-
title,
55-
drawer,
56-
floatingActionButton,
57-
tarWidgetControl,
58-
topPageControl,
59-
onPageChanged,
60-
);
50+
_GSYTabBarState createState() => new _GSYTabBarState();
6151
}
6252

6353
// ignore: mixin_inherits_from_not_object
6454
class _GSYTabBarState extends State<GSYTabBarWidget> with SingleTickerProviderStateMixin {
65-
final int _type;
66-
67-
final List<Widget> _tabViews;
68-
69-
final Color _indicatorColor;
70-
71-
final Widget _title;
72-
73-
final Widget _drawer;
74-
75-
final Widget _floatingActionButton;
76-
77-
final TarWidgetControl _tarWidgetControl;
78-
79-
final PageController _pageController;
80-
81-
final ValueChanged<int> _onPageChanged;
8255

83-
_GSYTabBarState(
84-
this._type,
85-
this._tabViews,
86-
this._indicatorColor,
87-
this._title,
88-
this._drawer,
89-
this._floatingActionButton,
90-
this._tarWidgetControl,
91-
this._pageController,
92-
this._onPageChanged,
93-
) : super();
56+
_GSYTabBarState();
9457

9558
TabController _tabController;
9659

@@ -109,50 +72,50 @@ class _GSYTabBarState extends State<GSYTabBarWidget> with SingleTickerProviderSt
10972

11073
@override
11174
Widget build(BuildContext context) {
112-
if (this._type == GSYTabBarWidget.TOP_TAB) {
75+
if (widget.type == GSYTabBarWidget.TOP_TAB) {
11376
///顶部tab bar
11477
return new Scaffold(
115-
floatingActionButton: _floatingActionButton,
116-
persistentFooterButtons: _tarWidgetControl == null ? [] : _tarWidgetControl.footerButton,
78+
floatingActionButton: widget.floatingActionButton,
79+
persistentFooterButtons: widget.tarWidgetControl == null ? [] : widget.tarWidgetControl.footerButton,
11780
appBar: new AppBar(
11881
backgroundColor: Theme.of(context).primaryColor,
119-
title: _title,
82+
title: widget.title,
12083
bottom: new TabBar(
12184
controller: _tabController,
12285
tabs: widget.tabItems,
123-
indicatorColor: _indicatorColor,
86+
indicatorColor: widget.indicatorColor,
12487
),
12588
),
12689
body: new PageView(
127-
controller: _pageController,
128-
children: _tabViews,
90+
controller: widget.topPageControl,
91+
children: widget.tabViews,
12992
onPageChanged: (index) {
13093
_tabController.animateTo(index);
131-
_onPageChanged?.call(index);
94+
widget.onPageChanged?.call(index);
13295
},
13396
),
13497
);
13598
}
13699

137100
///底部tab bar
138101
return new Scaffold(
139-
drawer: _drawer,
102+
drawer: widget.drawer,
140103
appBar: new AppBar(
141104
backgroundColor: Theme.of(context).primaryColor,
142-
title: _title,
105+
title: widget.title,
143106
),
144107
body: new TabBarView(
145108
//TabBarView呈现内容,因此放到Scaffold的body中
146109
controller: _tabController, //配置控制器
147-
children: _tabViews),
110+
children: widget.tabViews),
148111
bottomNavigationBar: new Material(
149112
//为了适配主题风格,包一层Material实现风格套用
150113
color: Theme.of(context).primaryColor, //底部导航栏主题颜色
151114
child: new TabBar(
152115
//TabBar导航标签,底部导航放到Scaffold的bottomNavigationBar中
153116
controller: _tabController, //配置控制器
154117
tabs: widget.tabItems,
155-
indicatorColor: _indicatorColor, //tab标签的下划线颜色
118+
indicatorColor: widget.indicatorColor, //tab标签的下划线颜色
156119
),
157120
));
158121
}

0 commit comments

Comments
 (0)