1+ import 'dart:async' ;
2+
13import 'package:flutter/material.dart' ;
4+ import 'package:flutter_redux/flutter_redux.dart' ;
25import 'package:gsy_github_app_flutter/common/dao/ReposDao.dart' ;
6+ import 'package:gsy_github_app_flutter/common/redux/GSYState.dart' ;
37import 'package:gsy_github_app_flutter/common/style/GSYStyle.dart' ;
48import 'package:gsy_github_app_flutter/common/utils/NavigatorUtils.dart' ;
59import 'package:gsy_github_app_flutter/widget/GSYCardItem.dart' ;
610import 'package:gsy_github_app_flutter/widget/GSYListState.dart' ;
711import 'package:gsy_github_app_flutter/widget/GSYPullLoadWidget.dart' ;
812import 'package:gsy_github_app_flutter/widget/ReposItem.dart' ;
13+ import 'package:redux/redux.dart' ;
914
1015/**
1116 * 主页趋势tab页
@@ -18,8 +23,8 @@ class TrendPage extends StatefulWidget {
1823}
1924
2025class _TrendPageState extends GSYListState <TrendPage > {
21- TrendTypeModel selectTime = TrendTime [0 ];
22- TrendTypeModel selectType = TrendType [0 ];
26+ TrendTypeModel selectTime = trendTime [0 ];
27+ TrendTypeModel selectType = trendType [0 ];
2328
2429 _renderItem (e) {
2530 ReposViewModel reposViewModel = ReposViewModel .fromTrendMap (e);
@@ -39,14 +44,14 @@ class _TrendPageState extends GSYListState<TrendPage> {
3944 padding: new EdgeInsets .only (left: 0.0 , top: 5.0 , right: 0.0 , bottom: 5.0 ),
4045 child: new Row (
4146 children: < Widget > [
42- _renderHeaderPopItem (selectTime.name, TrendTime , (TrendTypeModel result) {
47+ _renderHeaderPopItem (selectTime.name, trendTime , (TrendTypeModel result) {
4348 setState (() {
4449 selectTime = result;
4550 });
4651 showRefreshLoading ();
4752 }),
4853 new Container (height: 10.0 , width: 0.5 , color: Colors .white),
49- _renderHeaderPopItem (selectType.name, TrendType , (TrendTypeModel result) {
54+ _renderHeaderPopItem (selectType.name, trendType , (TrendTypeModel result) {
5055 setState (() {
5156 selectType = result;
5257 });
@@ -81,9 +86,24 @@ class _TrendPageState extends GSYListState<TrendPage> {
8186 return list;
8287 }
8388
89+ @override
90+ Future <Null > handleRefresh () async {
91+ if (isLoading) {
92+ return null ;
93+ }
94+ isLoading = true ;
95+ page = 1 ;
96+ await ReposDao .getTrendDao (_getStore (), since: selectTime.value, languageType: selectType.value);
97+ setState (() {
98+ pullLoadWidgetControl.needLoadMore = false ;
99+ });
100+ isLoading = false ;
101+ return null ;
102+ }
103+
84104 @override
85105 requestRefresh () async {
86- return await ReposDao . getTrendDao (since : selectTime.value, languageType : selectType.value) ;
106+ return null ;
87107 }
88108
89109 @override
@@ -92,11 +112,15 @@ class _TrendPageState extends GSYListState<TrendPage> {
92112 }
93113
94114 @override
95- bool get isRefreshFirst => true ;
115+ bool get isRefreshFirst => false ;
96116
97117 @override
98- void initState () {
99- super .initState ();
118+ void didChangeDependencies () {
119+ pullLoadWidgetControl.dataList = _getStore ().state.trendList;
120+ if (pullLoadWidgetControl.dataList.length == 0 ) {
121+ showRefreshLoading ();
122+ }
123+ super .didChangeDependencies ();
100124 }
101125
102126 @override
@@ -105,25 +129,33 @@ class _TrendPageState extends GSYListState<TrendPage> {
105129 clearData ();
106130 }
107131
132+ Store <GSYState > _getStore () {
133+ return StoreProvider .of (context);
134+ }
135+
108136 @override
109137 Widget build (BuildContext context) {
110138 super .build (context); // See AutomaticKeepAliveClientMixin.
111- return new Scaffold (
112- backgroundColor: Color (GSYColors .mainBackgroundColor),
113- appBar: new AppBar (
114- flexibleSpace: _renderHeader (),
115- backgroundColor: Color (GSYColors .mainBackgroundColor),
116- leading: new Container (),
117- elevation: 0.0 ,
118- ),
119- body: GSYPullLoadWidget (
120- pullLoadWidgetControl,
121- (BuildContext context, int index) => _renderItem (pullLoadWidgetControl.dataList[index]),
122- handleRefresh,
123- onLoadMore,
124- refreshKey: refreshIndicatorKey,
125- ),
126- );
139+ return new StoreBuilder <GSYState >(
140+ builder: (context, store) {
141+ return new Scaffold (
142+ backgroundColor: Color (GSYColors .mainBackgroundColor),
143+ appBar: new AppBar (
144+ flexibleSpace: _renderHeader (),
145+ backgroundColor: Color (GSYColors .mainBackgroundColor),
146+ leading: new Container (),
147+ elevation: 0.0 ,
148+ ),
149+ body: GSYPullLoadWidget (
150+ pullLoadWidgetControl,
151+ (BuildContext context, int index) => _renderItem (pullLoadWidgetControl.dataList[index]),
152+ handleRefresh,
153+ onLoadMore,
154+ refreshKey: refreshIndicatorKey,
155+ ),
156+ );
157+ },
158+ );;
127159 }
128160}
129161
@@ -134,13 +166,13 @@ class TrendTypeModel {
134166 TrendTypeModel (this .name, this .value);
135167}
136168
137- var TrendTime = [
169+ var trendTime = [
138170 TrendTypeModel (GSYStrings .trend_day, "daily" ),
139171 TrendTypeModel (GSYStrings .trend_week, "weekly" ),
140172 TrendTypeModel (GSYStrings .trend_month, "monthly" ),
141173];
142174
143- var TrendType = [
175+ var trendType = [
144176 TrendTypeModel (GSYStrings .trend_all, null ),
145177 TrendTypeModel ("Java" , "Java" ),
146178 TrendTypeModel ("Kotlin" , "Kotlin" ),
0 commit comments