Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
G
gm_flutter
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
林生雨
gm_flutter
Commits
a8260add
Commit
a8260add
authored
Jun 30, 2020
by
杜欣
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'test' into featrue/duxin
# Conflicts: # lib/main.dart
parents
3a5d1c31
54cb8cd7
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
348 additions
and
208 deletions
+348
-208
left_arrow.png
assets/left_arrow.png
+0
-0
LevelOneModel.dart
lib/ClueModel/page/levelOne/LevelOneModel.dart
+50
-12
LevelOnePage.dart
lib/ClueModel/page/levelOne/LevelOnePage.dart
+247
-185
MainRouter.dart
lib/MainRouter/MainRouter.dart
+2
-0
MainRouterImpl.dart
lib/MainRouter/MainRouterImpl.dart
+6
-0
TestPage.dart
lib/MainRouter/page/test/TestPage.dart
+4
-3
BaseComponent.dart
lib/commonModel/base/BaseComponent.dart
+27
-6
main.dart
lib/main.dart
+12
-2
No files found.
assets/left_arrow.png
View replaced file @
3a5d1c31
View file @
a8260add
776 Bytes
|
W:
|
H:
992 Bytes
|
W:
|
H:
2-up
Swipe
Onion skin
lib/ClueModel/page/levelOne/LevelOneModel.dart
View file @
a8260add
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
* @author lsy
* @author lsy
* @date 2020/6/29
* @date 2020/6/29
**/
**/
import
'package:flutter/material.dart'
;
import
'package:flutter_common/commonModel/live/BaseModel.dart'
;
import
'package:flutter_common/commonModel/live/BaseModel.dart'
;
import
'package:flutter_common/commonModel/live/LiveData.dart'
;
import
'package:flutter_common/commonModel/live/LiveData.dart'
;
import
'package:gm_flutter/ClueModel/server/api/ClueApi.serv.dart'
;
import
'package:gm_flutter/ClueModel/server/api/ClueApi.serv.dart'
;
...
@@ -18,27 +19,55 @@ class LevelOneModel extends BaseModel {
...
@@ -18,27 +19,55 @@ class LevelOneModel extends BaseModel {
LiveData
<
bool
>
showTab
=
LiveData
();
LiveData
<
bool
>
showTab
=
LiveData
();
LiveData
<
int
>
topIndexLive
=
new
LiveData
();
LiveData
<
int
>
topIndexLive
=
new
LiveData
();
LiveData
<
double
>
topScrollLive
=
new
LiveData
();
LiveData
<
double
>
topScrollLive
=
new
LiveData
();
LiveData
<
bool
>
loadingLive
=
LiveData
();
RxDispose
rxDispose
=
RxDispose
();
RxDispose
rxDispose
=
RxDispose
();
LiveData
<
Pair
<
int
,
List
<
Cards
>>>
cardsLive
=
LiveData
();
LiveData
<
Pair
<
int
,
List
<
Cards
>>>
cardsLive
=
LiveData
();
Map
<
int
,
List
<
Cards
>>
data
=
new
Map
();
Map
<
int
,
List
<
Cards
>>
data
=
new
Map
();
List
list
=
[
"plan"
,
"hospital"
,
"doctor"
,
"diary"
];
List
list
=
[
"plan"
,
"hospital"
,
"doctor"
,
"diary"
];
List
pageList
=
[
1
,
1
,
1
,
1
];
List
pageList
=
[
1
,
1
,
1
,
1
];
List
pageHeightList
=
[
118
,
149
,
118
,
118
];
void
refreshView
(
bool
clear
,
{
RefreshController
refreshListener
})
{
void
refreshView
(
bool
clear
,
{
RefreshController
refreshListener
})
{
int
index
=
currentIndex
;
Future
.
delayed
(
Duration
(
seconds:
1
),
()
{
if
(
clear
)
{
Cards
cards
=
Cards
(
data
.
clear
();
cardType:
"plan"
,
pageList
=
[
1
,
1
,
1
,
1
];
plan:
Plan
(
planName:
"ww"
,
minPrice:
"50"
,
maxPrice:
"500"
));
}
List
<
Cards
>
a
=
[
ClueApiImpl
.
getInstance
()
cards
,
.
getLevelOneList
(
cards
,
DioUtil
.
getInstance
().
getDio
(),
123
,
list
[
index
],
pageList
[
index
])
cards
,
.
listen
((
event
)
{
cards
,
cards
,
}).
addToDispose
(
rxDispose
).
onError
((
err
)
{
cards
,
cards
,
cards
,
cards
,
cards
,
cards
,
cards
,
];
List
<
Cards
>
b
=
[
cards
];
print
(
"INDEX
${currentIndex}
"
);
if
(
currentIndex
==
1
)
{
data
[
currentIndex
]
=
b
;
}
else
{
data
[
currentIndex
]
=
a
;
}
cardsLive
.
notifyView
(
Pair
(
ENDLOADING
,
data
));
});
});
// int index = currentIndex;
// if (clear) {
// data.clear();
// pageList = [1, 1, 1, 1];
// }
// ClueApiImpl.getInstance()
// .getLevelOneList(
// DioUtil.getInstance().getDio(), 123, list[index], pageList[index])
// .listen((event) {})
// .addToDispose(rxDispose)
// .onError((err) {});
}
}
int
currentIndex
=
0
;
int
currentIndex
=
0
;
...
@@ -51,6 +80,7 @@ class LevelOneModel extends BaseModel {
...
@@ -51,6 +80,7 @@ class LevelOneModel extends BaseModel {
rectLive
.
dispost
();
rectLive
.
dispost
();
topIndexLive
.
dispost
();
topIndexLive
.
dispost
();
topScrollLive
.
dispost
();
topScrollLive
.
dispost
();
loadingLive
.
dispost
();
}
}
void
selectPage
(
int
index
)
{
void
selectPage
(
int
index
)
{
...
@@ -58,5 +88,13 @@ class LevelOneModel extends BaseModel {
...
@@ -58,5 +88,13 @@ class LevelOneModel extends BaseModel {
return
;
return
;
}
}
currentIndex
=
index
;
currentIndex
=
index
;
if
(
data
[
currentIndex
]
==
null
)
{
cardsLive
.
notifyView
(
Pair
(
LOADING
,
null
));
refreshView
(
true
);
}
else
{
cardsLive
.
notifyView
(
Pair
(
ENDLOADING
,
data
[
currentIndex
]));
}
}
}
void
loadMore
()
{}
}
}
lib/ClueModel/page/levelOne/LevelOnePage.dart
View file @
a8260add
...
@@ -2,16 +2,22 @@
...
@@ -2,16 +2,22 @@
* @author lsy
* @author lsy
* @date 2020/6/29
* @date 2020/6/29
**/
**/
import
'dart:math'
;
import
'package:cached_network_image/cached_network_image.dart'
;
import
'package:cached_network_image/cached_network_image.dart'
;
import
'package:flutter/cupertino.dart'
;
import
'package:flutter/cupertino.dart'
;
import
'package:flutter/gestures.dart'
;
import
'package:flutter/gestures.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_boost/flutter_boost.dart'
;
import
'package:flutter_common/commonModel/live/LiveData.dart'
;
import
'package:flutter_common/commonModel/live/LiveData.dart'
;
import
'package:gm_flutter/ClueModel/page/levelOne/LevelOneItem.dart'
;
import
'package:gm_flutter/ClueModel/page/levelOne/LevelOneModel.dart'
;
import
'package:gm_flutter/ClueModel/page/levelOne/LevelOneModel.dart'
;
import
'package:gm_flutter/ClueModel/server/entity/LevelOneFeedList.dart'
;
import
'package:gm_flutter/ClueModel/util/PosUtil.dart'
;
import
'package:gm_flutter/ClueModel/util/PosUtil.dart'
;
import
'package:gm_flutter/ClueModel/view/FiveStarView.dart'
;
import
'package:gm_flutter/ClueModel/view/FiveStarView.dart'
;
import
'package:gm_flutter/commonModel/base/BaseComponent.dart'
;
import
'package:gm_flutter/commonModel/base/BaseComponent.dart'
;
import
'package:gm_flutter/commonModel/base/BaseState.dart'
;
import
'package:gm_flutter/commonModel/base/BaseState.dart'
;
import
'package:gm_flutter/commonModel/bean/Pair.dart'
;
import
'package:gm_flutter/commonModel/util/DartUtil.dart'
;
import
'package:gm_flutter/commonModel/util/DartUtil.dart'
;
import
'package:pull_to_refresh/pull_to_refresh.dart'
;
import
'package:pull_to_refresh/pull_to_refresh.dart'
;
...
@@ -31,10 +37,15 @@ class LevelOneState extends BaseState<LevelOnePage>
...
@@ -31,10 +37,15 @@ class LevelOneState extends BaseState<LevelOnePage>
GlobalKey
key1
=
new
GlobalKey
();
GlobalKey
key1
=
new
GlobalKey
();
double
screenWidth
;
double
screenWidth
;
List
<
Widget
>
oneList
=
new
List
();
List
<
Widget
>
oneList
=
new
List
();
int
lastPageIndex
=
0
;
@override
@override
void
initState
()
{
void
initState
()
{
super
.
initState
();
super
.
initState
();
Future
.
delayed
(
Duration
(
seconds:
3
),
()
{
_model
.
loadingLive
.
notifyView
(
false
);
_model
.
refreshView
(
true
);
});
pageController
.
addListener
(()
{
pageController
.
addListener
(()
{
if
(
screenWidth
!=
null
)
{
if
(
screenWidth
!=
null
)
{
_model
.
topScrollLive
.
notifyView
(
_model
.
topScrollLive
.
notifyView
(
...
@@ -54,7 +65,6 @@ class LevelOneState extends BaseState<LevelOnePage>
...
@@ -54,7 +65,6 @@ class LevelOneState extends BaseState<LevelOnePage>
}
}
void
_onScroll
(
double
offset
)
{
void
_onScroll
(
double
offset
)
{
print
(
"OFFSET
${offset}
"
);
if
(
offset
<
10
)
{
if
(
offset
<
10
)
{
_model
.
appBarLive
.
notifyView
(
0.0
);
_model
.
appBarLive
.
notifyView
(
0.0
);
}
else
if
(
offset
<
500
)
{
}
else
if
(
offset
<
500
)
{
...
@@ -90,7 +100,6 @@ class LevelOneState extends BaseState<LevelOnePage>
...
@@ -90,7 +100,6 @@ class LevelOneState extends BaseState<LevelOnePage>
_model
.
dispose
();
_model
.
dispose
();
pageController
.
dispose
();
pageController
.
dispose
();
_refreshController
.
dispose
();
_refreshController
.
dispose
();
pageController
.
dispose
();
super
.
dispose
();
super
.
dispose
();
}
}
...
@@ -99,146 +108,191 @@ class LevelOneState extends BaseState<LevelOnePage>
...
@@ -99,146 +108,191 @@ class LevelOneState extends BaseState<LevelOnePage>
screenWidth
=
MediaQuery
.
of
(
context
).
size
.
width
;
screenWidth
=
MediaQuery
.
of
(
context
).
size
.
width
;
return
Scaffold
(
return
Scaffold
(
backgroundColor:
Colors
.
white
,
backgroundColor:
Colors
.
white
,
body:
Column
(
body:
SafeArea
(
children:
<
Widget
>[
top:
false
,
Expanded
(
child:
StreamBuilder
<
bool
>(
child:
Stack
(
stream:
_model
.
loadingLive
.
stream
,
children:
<
Widget
>[
initialData:
true
,
MediaQuery
.
removePadding
(
builder:
(
c
,
data
)
{
removeTop:
true
,
if
(
data
.
data
)
{
context:
context
,
return
loadingItem
();
child:
NotificationListener
(
}
else
{
onNotification:
(
scrollNotification
)
{
return
home
();
if
(
scrollNotification
is
ScrollUpdateNotification
&&
}
scrollNotification
.
metrics
.
axisDirection
.
index
==
},
2
)
{
)));
_onScroll
(
scrollNotification
.
metrics
.
pixels
);
}
}
return
false
;
Widget
home
()
{
},
return
Column
(
child:
baseRefreshView
(
_refreshController
,
()
{
children:
<
Widget
>[
//TODO
Expanded
(
child:
Stack
(
children:
<
Widget
>[
MediaQuery
.
removePadding
(
removeTop:
true
,
context:
context
,
child:
NotificationListener
(
onNotification:
(
scrollNotification
)
{
if
(
scrollNotification
is
ScrollUpdateNotification
&&
scrollNotification
.
metrics
.
axisDirection
.
index
==
2
)
{
_onScroll
(
scrollNotification
.
metrics
.
pixels
);
}
return
false
;
},
child:
baseRefreshView
(
_refreshController
,
()
{
//TODO
// _refreshController.refreshCompleted();
// _refreshController.refreshCompleted();
},
null
,
null
,
},
customScrollView:
CustomScrollView
(
null
,
slivers:
<
Widget
>[
null
,
SliverList
(
customScrollView:
CustomScrollView
(
delegate:
SliverChildBuilderDelegate
(
slivers:
<
Widget
>[
(
BuildContext
context
,
int
index
)
{
SliverList
(
return
oneList
[
index
];
delegate:
SliverChildBuilderDelegate
(
},
(
BuildContext
context
,
int
index
)
{
childCount:
oneList
.
length
,
return
oneList
[
index
];
),
},
),
childCount:
oneList
.
length
,
],
)),
)),
StreamBuilder
<
double
>(
stream:
_model
.
appBarLive
.
stream
,
initialData:
_model
.
appBarLive
.
data
??
0.0
,
builder:
(
c
,
data
)
{
return
Opacity
(
opacity:
data
.
data
,
child:
Container
(
height:
86
,
decoration:
BoxDecoration
(
color:
Colors
.
white
),
child:
Center
(
child:
Padding
(
padding:
EdgeInsets
.
only
(
top:
20
),
child:
Text
(
'文案'
),
),
),
),
),
),
],
);
),
},
pullUp:
true
,
),
onLoading:
()
{
Positioned
(
_model
.
loadMore
();
top:
86
,
child:
StreamBuilder
<
bool
>(
stream:
_model
.
showTab
.
stream
,
initialData:
_model
.
showTab
.
data
??
false
,
builder:
(
c
,
data
)
{
return
Opacity
(
opacity:
data
.
data
?
1.0
:
0.0
,
child:
Container
(
width:
MediaQuery
.
of
(
context
).
size
.
width
,
color:
Colors
.
white
,
child:
MessageBarView
(
topIndexLive:
_model
.
topIndexLive
,
topScrollLive:
_model
.
topScrollLive
,
pageController:
pageController
,
),
));
},
},
),
),
)
)),
],
StreamBuilder
<
double
>(
),
stream:
_model
.
appBarLive
.
stream
,
),
initialData:
_model
.
appBarLive
.
data
??
0.0
,
Container
(
builder:
(
c
,
data
)
{
height:
0.5
,
return
Opacity
(
width:
double
.
maxFinite
,
opacity:
data
.
data
,
color:
Color
(
0xffE5E5E5
),
child:
Container
(
),
height:
86
,
Container
(
decoration:
BoxDecoration
(
color:
Colors
.
white
),
width:
double
.
maxFinite
,
child:
Center
(
height:
55
,
child:
Padding
(
child:
Row
(
padding:
EdgeInsets
.
only
(
top:
20
),
mainAxisSize:
MainAxisSize
.
min
,
child:
Text
(
'文案'
),
crossAxisAlignment:
CrossAxisAlignment
.
center
,
children:
<
Widget
>[
Container
(
margin:
EdgeInsets
.
only
(
left:
18
),
width:
30
,
child:
Column
(
mainAxisSize:
MainAxisSize
.
min
,
children:
<
Widget
>[
Container
(
width:
22
,
height:
22
,
child:
Image
.
asset
(
"assets/vs_black.png"
),
),
),
Container
(
),
margin:
EdgeInsets
.
only
(
top:
3
),
child:
baseText
(
"去比较"
,
10
,
Color
(
0xff282828
)),
)
],
),
),
),
);
GestureDetector
(
},
behavior:
HitTestBehavior
.
opaque
,
),
onTap:
()
{},
Positioned
(
child:
Container
(
top:
86
,
margin:
EdgeInsets
.
only
(
left:
15
),
child:
StreamBuilder
<
bool
>(
width:
135
,
stream:
_model
.
showTab
.
stream
,
height:
40
,
initialData:
_model
.
showTab
.
data
??
false
,
decoration:
BoxDecoration
(
builder:
(
c
,
data
)
{
color:
Color
(
0xff51CDC7
),
return
Visibility
(
borderRadius:
BorderRadius
.
circular
(
20
)),
visible:
data
.
data
,
alignment:
Alignment
.
center
,
child:
Container
(
child:
baseText
(
"咨询"
,
14
,
Colors
.
white
,
bold:
true
),
width:
MediaQuery
.
of
(
context
).
size
.
width
,
)),
color:
Colors
.
white
,
GestureDetector
(
child:
MessageBarView
(
behavior:
HitTestBehavior
.
opaque
,
topIndexLive:
_model
.
topIndexLive
,
onTap:
()
{},
topScrollLive:
_model
.
topScrollLive
,
pageController:
pageController
,
),
));
},
),
),
Positioned
(
top:
49
,
left:
15
,
child:
GestureDetector
(
behavior:
HitTestBehavior
.
opaque
,
onTap:
()
{
//TODO
print
(
"TAP"
);
Navigator
.
pop
(
context
);
},
child:
Container
(
width:
30
,
height:
30
,
decoration:
BoxDecoration
(
color:
Color
(
0x99FFFFFF
),
shape:
BoxShape
.
circle
),
alignment:
Alignment
.
center
,
child:
Container
(
child:
Container
(
margin:
EdgeInsets
.
only
(
left:
15
),
child:
Image
.
asset
(
"assets/left_arrow.png"
),
width:
135
,
),
height:
40
,
)),
decoration:
BoxDecoration
(
)
color:
Color
(
0xffF96079
),
],
borderRadius:
BorderRadius
.
circular
(
20
)),
),
alignment:
Alignment
.
center
,
),
child:
baseText
(
"获取底价"
,
14
,
Colors
.
white
,
bold:
true
),
Container
(
)),
height:
0.5
,
Expanded
(
width:
double
.
maxFinite
,
child:
Container
(),
color:
Color
(
0xffE5E5E5
),
)
),
],
Container
(
width:
double
.
maxFinite
,
height:
55
,
child:
Row
(
mainAxisSize:
MainAxisSize
.
min
,
crossAxisAlignment:
CrossAxisAlignment
.
center
,
children:
<
Widget
>[
Container
(
margin:
EdgeInsets
.
only
(
left:
18
),
width:
30
,
child:
Column
(
mainAxisSize:
MainAxisSize
.
min
,
children:
<
Widget
>[
Container
(
width:
22
,
height:
22
,
child:
Image
.
asset
(
"assets/vs_black.png"
),
),
Container
(
margin:
EdgeInsets
.
only
(
top:
3
),
child:
baseText
(
"去比较"
,
10
,
Color
(
0xff282828
)),
)
],
),
),
),
)
GestureDetector
(
],
behavior:
HitTestBehavior
.
opaque
,
));
onTap:
()
{},
child:
Container
(
margin:
EdgeInsets
.
only
(
left:
15
),
width:
135
,
height:
40
,
decoration:
BoxDecoration
(
color:
Color
(
0xff51CDC7
),
borderRadius:
BorderRadius
.
circular
(
20
)),
alignment:
Alignment
.
center
,
child:
baseText
(
"咨询"
,
14
,
Colors
.
white
,
bold:
true
),
)),
GestureDetector
(
behavior:
HitTestBehavior
.
opaque
,
onTap:
()
{},
child:
Container
(
margin:
EdgeInsets
.
only
(
left:
15
),
width:
135
,
height:
40
,
decoration:
BoxDecoration
(
color:
Color
(
0xffF96079
),
borderRadius:
BorderRadius
.
circular
(
20
)),
alignment:
Alignment
.
center
,
child:
baseText
(
"获取底价"
,
14
,
Colors
.
white
,
bold:
true
),
)),
Expanded
(
child:
Container
(),
)
],
),
)
],
);
}
}
Widget
head
()
{
Widget
head
()
{
...
@@ -252,24 +306,7 @@ class LevelOneState extends BaseState<LevelOnePage>
...
@@ -252,24 +306,7 @@ class LevelOneState extends BaseState<LevelOnePage>
fit:
BoxFit
.
cover
,
fit:
BoxFit
.
cover
,
image:
NetworkImage
(
image:
NetworkImage
(
"https://pic.igengmei.com/2018/09/11/1513/b7e825a4e4c1-w"
))),
"https://pic.igengmei.com/2018/09/11/1513/b7e825a4e4c1-w"
))),
child:
GestureDetector
(
// child: ,
behavior:
HitTestBehavior
.
opaque
,
onTap:
()
{
//TODO
},
child:
Container
(
width:
30
,
height:
30
,
decoration:
BoxDecoration
(
color:
Color
(
0x99FFFFFF
),
shape:
BoxShape
.
circle
),
margin:
EdgeInsets
.
only
(
top:
49
,
left:
15
),
alignment:
Alignment
.
center
,
child:
Container
(
width:
7
,
height:
14
,
child:
Image
.
asset
(
"assets/left_arrow.png"
),
),
)),
);
);
}
}
...
@@ -433,41 +470,66 @@ class LevelOneState extends BaseState<LevelOnePage>
...
@@ -433,41 +470,66 @@ class LevelOneState extends BaseState<LevelOnePage>
));
));
}
}
List
temp
=
[
20
,
10
,
10
,
10
];
int
currentIndex
;
Widget
pages
()
{
Widget
pages
()
{
// return StreamBuilder(
return
StreamBuilder
<
Pair
<
int
,
List
<
Cards
>>>(
// stream: _model.cardsLive.stream,
stream:
_model
.
cardsLive
.
stream
,
// initialData: _model.cardsLive.data??[],
initialData:
_model
.
cardsLive
.
data
??
Pair
(
LOADING
,
null
),
// builder: (c,data){
builder:
(
c
,
data
)
{
//
double
height
=
MediaQuery
.
of
(
context
).
size
.
height
-
86
-
55.5
-
49
;
// },
if
(
_model
.
data
[
_model
.
currentIndex
]
!=
null
&&
// )
_model
.
data
[
_model
.
currentIndex
].
length
>
0
)
{
double
height
=
500
;
height
=
max
(
return
Container
(
_model
.
data
[
_model
.
currentIndex
].
length
*
width:
double
.
maxFinite
,
_model
.
pageHeightList
[
_model
.
currentIndex
]
*
height:
height
,
1.0
,
child:
PageView
.
builder
(
height
);
itemBuilder:
(
c
,
index
)
{
}
return
Container
(
return
Container
(
width:
double
.
maxFinite
,
color:
Colors
.
yellow
,
height:
height
,
width:
double
.
maxFinite
,
color:
Colors
.
red
,
height:
height
,
child:
ListView
.
builder
(
itemBuilder:
(
c
,
index
){
child:
PageView
.
builder
(
itemBuilder:
(
c
,
pageIndex
)
{
},
itemCount:
10
,),
if
(
data
.
data
.
first
==
FAIL
)
{
);
return
errorItem
(()
{
},
_model
.
refreshView
(
true
);
allowImplicitScrolling:
false
,
});
dragStartBehavior:
DragStartBehavior
.
down
,
}
controller:
pageController
,
if
(
data
.
data
.
first
==
LOADING
||
itemCount:
4
,
_model
.
data
[
pageIndex
]
==
null
)
{
onPageChanged:
(
index
)
{
return
loadingItem
();
_model
.
topIndexLive
.
notifyView
(
index
);
}
_model
.
selectPage
(
index
);
if
(
data
.
data
.
second
.
length
==
0
)
{
},
if
(
_model
.
pageList
[
pageIndex
]
==
1
)
{
),
return
emptyItem
();
}
else
{
_refreshController
.
loadNoData
();
}
}
else
{
_refreshController
.
loadComplete
();
}
return
ListView
.
builder
(
physics:
NeverScrollableScrollPhysics
(),
itemBuilder:
(
c
,
index
)
{
return
LevelOneItem
(
_model
.
data
[
pageIndex
][
index
]);
},
itemCount:
_model
.
data
[
pageIndex
].
length
,
);
},
allowImplicitScrolling:
false
,
dragStartBehavior:
DragStartBehavior
.
down
,
controller:
pageController
,
itemCount:
4
,
onPageChanged:
(
index
)
{
setState
(()
{
_refreshController
.
resetNoData
();
});
_model
.
topIndexLive
.
notifyView
(
index
);
_model
.
selectPage
(
index
);
},
),
);
},
);
);
}
}
}
}
lib/MainRouter/MainRouter.dart
View file @
a8260add
...
@@ -10,4 +10,6 @@ import 'MainRouterImpl.dart';
...
@@ -10,4 +10,6 @@ import 'MainRouterImpl.dart';
@Router
(
"MainRouter"
,
MainRouterImpl
,
true
)
@Router
(
"MainRouter"
,
MainRouterImpl
,
true
)
abstract
class
MainRouter
extends
RouterBaser
{
abstract
class
MainRouter
extends
RouterBaser
{
void
init
();
void
init
();
Widget
getTestPage
();
}
}
lib/MainRouter/MainRouterImpl.dart
View file @
a8260add
...
@@ -4,6 +4,7 @@
...
@@ -4,6 +4,7 @@
**/
**/
import
'package:flutter/src/widgets/framework.dart'
;
import
'package:flutter/src/widgets/framework.dart'
;
import
'package:gm_flutter/MainRouter/manager/MainManager.dart'
;
import
'package:gm_flutter/MainRouter/manager/MainManager.dart'
;
import
'package:gm_flutter/MainRouter/page/test/TestPage.dart'
;
import
'MainRouter.dart'
;
import
'MainRouter.dart'
;
...
@@ -12,4 +13,9 @@ class MainRouterImpl implements MainRouter {
...
@@ -12,4 +13,9 @@ class MainRouterImpl implements MainRouter {
void
init
()
{
void
init
()
{
MainManager
.
getInstance
().
startInit
();
MainManager
.
getInstance
().
startInit
();
}
}
@override
Widget
getTestPage
()
{
return
TestPage
();
}
}
}
lib/MainRouter/page/test/TestPage.dart
View file @
a8260add
...
@@ -8,6 +8,7 @@ import 'package:flutter_common/commonModel/util/JumpUtil.dart';
...
@@ -8,6 +8,7 @@ import 'package:flutter_common/commonModel/util/JumpUtil.dart';
import
'package:gm_flutter/MainRouter/page/proxy/NetProxyPage.dart'
;
import
'package:gm_flutter/MainRouter/page/proxy/NetProxyPage.dart'
;
import
'package:gm_flutter/commonModel/base/BaseComponent.dart'
;
import
'package:gm_flutter/commonModel/base/BaseComponent.dart'
;
import
'package:gm_flutter/commonModel/base/BaseState.dart'
;
import
'package:gm_flutter/commonModel/base/BaseState.dart'
;
import
'package:gm_flutter/main.mark.dart'
;
import
'TP.dart'
;
import
'TP.dart'
;
...
@@ -24,8 +25,8 @@ class TestState extends BaseState<TestPage> {
...
@@ -24,8 +25,8 @@ class TestState extends BaseState<TestPage> {
list
.
add
(
listItem
(
"设置代理页面"
,
()
{
list
.
add
(
listItem
(
"设置代理页面"
,
()
{
JumpUtil
.
jumpToPageRight
(
context
,
NetProxyPage
());
JumpUtil
.
jumpToPageRight
(
context
,
NetProxyPage
());
}));
}));
list
.
add
(
listItem
(
"
测试测试
"
,
()
{
list
.
add
(
listItem
(
"
一级列表页
"
,
()
{
JumpUtil
.
jumpToPageRight
(
context
,
TP
());
JumpUtil
.
jumpToPageRight
(
context
,
RouterCenterImpl
().
findClueRouter
().
getLevelOnePage
());
}));
}));
return
list
;
return
list
;
}
}
...
@@ -40,7 +41,7 @@ class TestState extends BaseState<TestPage> {
...
@@ -40,7 +41,7 @@ class TestState extends BaseState<TestPage> {
Navigator
.
pop
(
context
);
Navigator
.
pop
(
context
);
}),
}),
body:
Container
(
body:
Container
(
child:
Column
(
child:
ListView
(
children:
innerList
(),
children:
innerList
(),
),
),
),
),
...
...
lib/commonModel/base/BaseComponent.dart
View file @
a8260add
...
@@ -70,7 +70,7 @@ AppBar _baseAppBarChangeTitle(
...
@@ -70,7 +70,7 @@ AppBar _baseAppBarChangeTitle(
width:
30
,
width:
30
,
height:
30
,
height:
30
,
child:
Image
.
asset
(
child:
Image
.
asset
(
"
image
s/left_arrow.png"
,
"
asset
s/left_arrow.png"
,
color:
Color
(
0xff323232
),
color:
Color
(
0xff323232
),
),
),
))),
))),
...
@@ -272,16 +272,17 @@ Widget baseRefreshView(RefreshController refreshController,
...
@@ -272,16 +272,17 @@ Widget baseRefreshView(RefreshController refreshController,
footer:
CustomFooter
(
footer:
CustomFooter
(
builder:
(
BuildContext
context
,
LoadStatus
mode
)
{
builder:
(
BuildContext
context
,
LoadStatus
mode
)
{
Widget
body
;
Widget
body
;
// if (mode == LoadStatus.idle) {
print
(
"LOAD STATUE
${mode}
"
);
// body = baseText("准备加载", 12, Color(0xff545454));
if
(
mode
==
LoadStatus
.
idle
)
{
// } else
body
=
baseText
(
"上拉加载更多"
,
12
,
Color
(
0xff545454
));
if
(
mode
==
LoadStatus
.
loading
)
{
}
else
if
(
mode
==
LoadStatus
.
loading
)
{
body
=
baseText
(
"加载中"
,
12
,
Color
(
0xff545454
));
body
=
baseText
(
"加载中"
,
12
,
Color
(
0xff545454
));
}
else
if
(
mode
==
LoadStatus
.
failed
)
{
}
else
if
(
mode
==
LoadStatus
.
failed
)
{
body
=
baseText
(
"加载失败"
,
12
,
Color
(
0xff545454
));
body
=
baseText
(
"加载失败"
,
12
,
Color
(
0xff545454
));
}
else
if
(
mode
==
LoadStatus
.
noMore
)
{
}
else
if
(
mode
==
LoadStatus
.
noMore
)
{
body
=
baseText
(
"没有更多数据了"
,
12
,
Color
(
0xff545454
));
body
=
baseText
(
"没有更多数据了"
,
12
,
Color
(
0xff545454
));
}
else
{
}
else
{
body
=
Container
();
body
=
Container
();
}
}
return
Container
(
return
Container
(
...
@@ -333,3 +334,23 @@ Widget normalRefreshHeader() {
...
@@ -333,3 +334,23 @@ Widget normalRefreshHeader() {
},
},
);
);
}
}
Widget
emptyItem
(
{
String
detail
})
{
return
Column
(
mainAxisSize:
MainAxisSize
.
min
,
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
<
Widget
>[
Container
(
height:
210
,
width:
210
,
color:
Colors
.
red
,
),
Container
(
margin:
EdgeInsets
.
only
(
top:
8
),
child:
baseText
(
detail
==
null
?
"暂无消息,找人聊聊去"
:
detail
,
15
,
Color
(
0xff9B9B9B
)),
),
],
);
}
lib/main.dart
View file @
a8260add
...
@@ -69,9 +69,19 @@ class MyApp extends State<MyAppWidget> {
...
@@ -69,9 +69,19 @@ class MyApp extends State<MyAppWidget> {
Widget
build
(
BuildContext
context
)
{
Widget
build
(
BuildContext
context
)
{
WindowUtil
.
setBarStatus
(
true
);
WindowUtil
.
setBarStatus
(
true
);
return
MaterialApp
(
return
MaterialApp
(
theme:
ThemeData
(),
theme:
ThemeData
(
primaryColor:
Colors
.
white
,
cursorColor:
Color
(
0xff20BDBB
),
canvasColor:
Colors
.
white
),
builder:
FlutterBoost
.
init
(
postPush:
_onRoutePushed
),
builder:
FlutterBoost
.
init
(
postPush:
_onRoutePushed
),
home:
RouterCenterImpl
().
findClueRouter
().
getLevelTwoPage
());
home:
isDebug
?
RouterCenterImpl
().
findMainRouter
().
getTestPage
()
:
Container
(
color:
Colors
.
white
,
child:
Center
(
child:
loadingItem
(),
),
));
}
}
void
_onRoutePushed
(
void
_onRoutePushed
(
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment