Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 27 additions & 2 deletions lib/adsorptionview_flutter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ class AdsorptionView<T extends AdsorptionData> extends StatefulWidget{
final List<T> adsorptionDatas;
final GetHearWidget<T> headChild;
final GetGeneralItem<T> generalItemChild;
final int initialIndex;
final double itemHeight;
final double itemWidth;
final double cacheExtent;
Expand All @@ -18,6 +19,7 @@ class AdsorptionView<T extends AdsorptionData> extends StatefulWidget{
@required this.adsorptionDatas,
@required this.headChild,
@required this.generalItemChild,
this.initialIndex:0,
this.itemHeight:50.0,
this.itemWidth:double.infinity,
this.cacheExtent:30.0,
Expand All @@ -36,7 +38,20 @@ class AdsorptionView<T extends AdsorptionData> extends StatefulWidget{
///此控件适用于固定高度的ListView
class AdsorptionViewState<T extends AdsorptionData> extends State<AdsorptionView<T>>{

ScrollController scrollController=new ScrollController();
ScrollController scrollController;

@override
void initState() {
super.initState();

var initialScrollOffset = 0.0;

if(widget.initialIndex >= 1) {
initialScrollOffset = (widget.initialIndex - 1) * widget.itemHeight;
}

scrollController = new ScrollController(initialScrollOffset: initialScrollOffset);
}

@override
Widget build(BuildContext context) {
Expand Down Expand Up @@ -65,6 +80,7 @@ class AdsorptionViewState<T extends AdsorptionData> extends State<AdsorptionView
child: new HeaderView(
scrollController: scrollController,
headChild: widget.headChild,
initialIndex: widget.initialIndex,
adsorptionDatas: widget.adsorptionDatas,
itemWidth: widget.itemWidth,
itemHeight: widget.itemHeight,
Expand Down Expand Up @@ -141,13 +157,15 @@ class HeaderView<T extends AdsorptionData> extends StatefulWidget{
final ScrollController scrollController;
final double itemHeight;
final double itemWidth;
final int initialIndex;
final GetHearWidget<T> headChild;
final List<T> adsorptionDatas;

HeaderView({
@required this.scrollController,
this.itemHeight:50.0,
this.itemWidth:double.infinity,
this.initialIndex:0,
@required this.headChild,
@required this.adsorptionDatas,
});
Expand All @@ -165,7 +183,14 @@ class HeaderViewState<T extends AdsorptionData> extends State<HeaderView<T>>{

@override
void initState() {
headerStr=widget.adsorptionDatas.first;
var headerIndex = 0;
for(int i=widget.initialIndex; i>=0; i--) {
if(widget.adsorptionDatas[i].isHeader) {
headerIndex = i;
break;
}
}
headerStr=widget.adsorptionDatas[headerIndex];

widget.scrollController.addListener((){
//计算滑动了多少距离了
Expand Down