6
6
import 'package:flutter/material.dart' ;
7
7
import 'package:flutter/rendering.dart' ;
8
8
import 'package:flutter_wanandroid/common/Page.dart' ;
9
+ import 'package:flutter_wanandroid/common/application.dart' ;
9
10
import 'package:flutter_wanandroid/common/constants.dart' ;
11
+ import 'package:flutter_wanandroid/common/event/coin_user_Info_event.dart' ;
10
12
import 'package:flutter_wanandroid/http/data_utils.dart' ;
11
13
import 'package:flutter_wanandroid/utils/tool_utils.dart' ;
12
14
import 'package:flutter_wanandroid/views/collect/page/collect_item_page.dart' ;
13
15
import 'package:flutter_wanandroid/views/collect/page/collect_web_item_page.dart' ;
14
16
import 'package:flutter_wanandroid/views/share/page/user_share_page.dart' ;
15
17
import 'package:flutter_wanandroid/views/user/delegate/sticky_tabBar_delegate.dart' ;
16
18
import 'package:flutter_wanandroid/widget/stroke_widget.dart' ;
17
- import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart' as extended;
19
+ import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'
20
+ as extended;
18
21
19
22
TabController _tabController;
20
23
21
24
class UserCenterPage extends StatefulWidget {
22
-
23
25
final String type;
24
26
final String authorId;
25
27
final String authorName;
26
28
27
- UserCenterPage ({this .type = Constants .USER_CENTER_PAGE_TYPE , this .authorId, this .authorName});
29
+ UserCenterPage (
30
+ {this .type = Constants .USER_CENTER_PAGE_TYPE ,
31
+ this .authorId,
32
+ this .authorName});
28
33
29
34
@override
30
35
_UserCenterPageState createState () => _UserCenterPageState ();
31
36
}
32
37
33
- class _UserCenterPageState extends State <UserCenterPage > with SingleTickerProviderStateMixin {
34
-
38
+ class _UserCenterPageState extends State <UserCenterPage >
39
+ with SingleTickerProviderStateMixin {
35
40
// 滚动控制器
36
41
ScrollController _scrollController;
37
42
43
+ //积分 等级
44
+ int coin = 0 ;
45
+ int level = 0 ;
46
+
38
47
@override
39
48
void initState () {
40
49
super .initState ();
41
- _tabController = new TabController (length: Constants .USER_CENTER_PAGE_TYPE == widget.type ?
42
- Constants .userPages.length: Constants .userSharePages.length,vsync: this );
50
+ _tabController = new TabController (
51
+ length: Constants .USER_CENTER_PAGE_TYPE == widget.type
52
+ ? Constants .userPages.length
53
+ : Constants .userSharePages.length,
54
+ vsync: this );
43
55
_scrollController = ScrollController ();
56
+
57
+ Application .eventBus.on < CoinUserInfoEvent > ().listen ((event) {
58
+ print ("刷新 个人 或者用户等级信息" );
59
+ //event.coinUserInfo.rank;
60
+ if (this .mounted) {
61
+ setState (() {
62
+ coin = event.coinUserInfo.coinCount;
63
+ level = event.coinUserInfo.level;
64
+ });
65
+ }
66
+ });
44
67
}
45
68
46
69
@override
@@ -91,67 +114,105 @@ class _UserCenterPageState extends State<UserCenterPage> with SingleTickerProvid
91
114
color: ToolUtils.getPrimaryColor(context), //指示器颜色
92
115
)
93
116
);*/
94
- Scaffold (
95
- body: extended.NestedScrollView ( //使用扩展 extended.NestedScrollView 处理 联动问题
96
- innerScrollPositionKeyBuilder: (){
97
- return Key (getKey (_tabController.index));
98
- },
99
- headerSliverBuilder: (context, bool ) {
100
- return [
101
- SliverAppBar (
102
- iconTheme: IconThemeData (color: Colors .white), //设置 icon 颜色
103
- pinned: true ,
104
- expandedHeight: 150.0 ,
105
- flexibleSpace: FlexibleSpaceBar (
106
- title: Text (Constants .USER_CENTER_PAGE_TYPE == widget.type ? dataUtils.getUserName (): widget.authorName,style: TextStyle (color: Colors .white,
107
- fontWeight: FontWeight .bold )),
108
- background: Image .asset (
109
- ToolUtils .getImage ("ic_zone_background" ,format: "webp" ), fit: BoxFit .cover),
110
- )
111
- ),
112
- SliverPersistentHeader (
113
- pinned: true ,
114
- delegate: StickyTabBarDelegate (
115
- color: Colors .white,
116
- child: buildTabBar (context)
117
+ Scaffold (
118
+ body: extended.NestedScrollView (
119
+ //使用扩展 extended.NestedScrollView 处理 联动问题
120
+ innerScrollPositionKeyBuilder: () {
121
+ return Key (getKey (_tabController.index));
122
+ },
123
+ headerSliverBuilder: (context, bool ) {
124
+ return [
125
+ SliverAppBar (
126
+ iconTheme: IconThemeData (color: Colors .white), //设置 icon 颜色
127
+ pinned: true ,
128
+ expandedHeight: 150.0 ,
129
+ flexibleSpace: FlexibleSpaceBar (
130
+ centerTitle: false ,
131
+ title: Container (
132
+ child: Row (
133
+ children: < Widget > [
134
+ Text (
135
+ Constants .USER_CENTER_PAGE_TYPE == widget.type
136
+ ? dataUtils.getUserName ()
137
+ : widget.authorName,
138
+ style: TextStyle (
139
+ color: Colors .white,
140
+ fontWeight: FontWeight .bold)),
141
+ Padding (
142
+ child: StrokeWidget (
143
+ strokeWidth: 2 ,
144
+ edgeInsets: EdgeInsets .symmetric (
145
+ horizontal: 2.0 , vertical: 0.0 ),
146
+ color: Colors .white,
147
+ childWidget: Text ("lv " + level.toString (),
148
+ style: TextStyle (
149
+ fontSize: 11.0 ,
150
+ color: Colors .white,
151
+ fontWeight: FontWeight .bold))),
152
+ padding: EdgeInsets .only (left: 10.0 ),
153
+ ),
154
+ Expanded (
155
+ child: Padding (
156
+ child: Text ("积分:" + coin.toString (),
157
+ style: TextStyle (
158
+ color: Colors .white,
159
+ fontWeight: FontWeight .bold),
160
+ maxLines: 1 , // title 只显示一行
161
+ overflow: TextOverflow .ellipsis),
162
+ padding: EdgeInsets .only (left: 10.0 ),
163
+ ),
164
+ )
165
+ ],
117
166
),
118
167
),
119
- ];
120
- },
121
- body: TabBarView (
122
- controller: _tabController,
123
- children: Constants .USER_CENTER_PAGE_TYPE == widget.type ? Constants .userPages.map ((Page page){
168
+ background: Image .asset (
169
+ ToolUtils .getImage ("ic_zone_background" , format: "webp" ),
170
+ fit: BoxFit .cover),
171
+ )),
172
+ SliverPersistentHeader (
173
+ pinned: true ,
174
+ delegate: StickyTabBarDelegate (
175
+ color: Colors .white, child: buildTabBar (context)),
176
+ ),
177
+ ];
178
+ },
179
+ body: TabBarView (
180
+ controller: _tabController,
181
+ children: Constants .USER_CENTER_PAGE_TYPE == widget.type
182
+ ? Constants .userPages.map ((Page page) {
124
183
return buildTabView (context, page);
125
- }).toList () :
126
- Constants .userSharePages.map ((Page page){
184
+ }).toList ()
185
+ : Constants .userSharePages.map ((Page page) {
127
186
return buildTabView (context, page);
128
187
}).toList (),
129
- ),
130
- ),
131
- );
188
+ ),
189
+ ),
190
+ );
132
191
}
133
192
134
193
Widget buildTabView (BuildContext context, Page page) {
135
194
int labelIndex = page.labelIndex;
136
- switch (labelIndex){
195
+ switch (labelIndex) {
137
196
case 1 :
138
- //收藏文章
139
- return extended.NestedScrollViewInnerScrollPositionKeyWidget ( //使用扩展 extended.NestedScrollView 处理 联动问题
140
- Key (getKey (labelIndex)),CollectItemPage (false )
141
- );
197
+ //收藏文章
198
+ return extended.NestedScrollViewInnerScrollPositionKeyWidget (
199
+ //使用扩展 extended.NestedScrollView 处理 联动问题
200
+ Key (getKey (labelIndex)),
201
+ CollectItemPage (false ));
142
202
break ;
143
203
case 0 :
144
- //分享文章
145
- return extended.NestedScrollViewInnerScrollPositionKeyWidget ( //使用扩展 extended.NestedScrollView 处理 联动问题
146
- Key (getKey (labelIndex)),UserSharePage (type: widget.type,authorId: widget.authorId)
147
- );
204
+ //分享文章
205
+ return extended.NestedScrollViewInnerScrollPositionKeyWidget (
206
+ //使用扩展 extended.NestedScrollView 处理 联动问题
207
+ Key (getKey (labelIndex)),
208
+ UserSharePage (type: widget.type, authorId: widget.authorId));
148
209
break ;
149
210
case 2 :
150
- //收藏网站
211
+ //收藏网站
151
212
return CollectWebItemPage (false );
152
213
break ;
153
214
default :
154
- return Container (
215
+ return Container (
155
216
child: new Center (
156
217
child: new Text ("暂未实现 Page" ),
157
218
),
@@ -160,13 +221,12 @@ class _UserCenterPageState extends State<UserCenterPage> with SingleTickerProvid
160
221
}
161
222
}
162
223
163
- String getKey (int index){
164
- if (Constants .USER_CENTER_PAGE_TYPE == widget.type){
165
- return Constants .userPages[index].labelId+ index.toString ();
166
- }else {
167
- return Constants .userSharePages[index].labelId+ index.toString ();
224
+ String getKey (int index) {
225
+ if (Constants .USER_CENTER_PAGE_TYPE == widget.type) {
226
+ return Constants .userPages[index].labelId + index.toString ();
227
+ } else {
228
+ return Constants .userSharePages[index].labelId + index.toString ();
168
229
}
169
-
170
230
}
171
231
172
232
buildUserIconAndNickName () {
@@ -180,48 +240,55 @@ class _UserCenterPageState extends State<UserCenterPage> with SingleTickerProvid
180
240
style:TextStyle(color: Colors.white,
181
241
fontWeight: FontWeight.bold )),*/
182
242
Row (
183
- children: < Widget > [
184
- Padding (
185
- child: StrokeWidget (
186
- strokeWidth: 2 ,
187
- edgeInsets: EdgeInsets .symmetric (horizontal: 2.0 , vertical: 0.0 ),
188
- color: Colors .white,
189
- childWidget: Text ( "lv 666" , style: TextStyle (fontSize: 11.0 , color: Colors .white, fontWeight: FontWeight .bold))
190
- ),
191
- padding: EdgeInsets .only (right: 10.0 ),
192
- ),
193
- Text (
194
- "积分:66666" ,
195
- style: TextStyle (color: Colors .white,fontSize: 15.0 ),
196
- )
197
- ],
198
- );
199
- //],
243
+ children: < Widget > [
244
+ Padding (
245
+ child: StrokeWidget (
246
+ strokeWidth: 2 ,
247
+ edgeInsets: EdgeInsets .symmetric (horizontal: 2.0 , vertical: 0.0 ),
248
+ color: Colors .white,
249
+ childWidget: Text ("lv 666" ,
250
+ style: TextStyle (
251
+ fontSize: 11.0 ,
252
+ color: Colors .white,
253
+ fontWeight: FontWeight .bold))),
254
+ padding: EdgeInsets .only (right: 10.0 ),
255
+ ),
256
+ Text (
257
+ "积分:66666" ,
258
+ style: TextStyle (color: Colors .white, fontSize: 15.0 ),
259
+ )
260
+ ],
261
+ );
262
+ //],
200
263
//);
201
264
}
202
265
203
266
//页面刷新
204
- Future <Null > _pageRefresh () async {
267
+ Future <Null > _pageRefresh () async {
205
268
print ("下拉刷新 " );
206
269
207
270
return null ;
208
271
}
272
+
209
273
//构造 TabBar
210
274
buildTabBar (BuildContext context) {
211
275
return new TabBar (
212
276
//构造Tab集合
213
- tabs: Constants .USER_CENTER_PAGE_TYPE == widget.type ? Constants .userPages.map ((Page page ){
214
- return Tab (
215
- text: page.labelId,
216
- );
217
- }).toList (): Constants .userSharePages.map ((Page page){
218
- return Tab (
219
- text: page.labelId,
220
- );
221
- }).toList (),
277
+ tabs: Constants .USER_CENTER_PAGE_TYPE == widget.type
278
+ ? Constants .userPages.map ((Page page) {
279
+ return Tab (
280
+ text: page.labelId,
281
+ );
282
+ }).toList ()
283
+ : Constants .userSharePages.map ((Page page) {
284
+ return Tab (
285
+ text: page.labelId,
286
+ );
287
+ }).toList (),
222
288
//设置tab文字得类型
223
289
labelStyle: TextStyle (fontSize: 15 , fontWeight: FontWeight .bold),
224
290
labelPadding: EdgeInsets .only (top: 12.0 , left: 12.0 , right: 12.0 ),
291
+
225
292
///指示器大小计算方式,TabBarIndicatorSize.label跟文字等宽,TabBarIndicatorSize.tab跟每个tab等宽
226
293
indicatorSize: TabBarIndicatorSize .label,
227
294
//设置tab选中得颜色
0 commit comments