diff --git a/lib/adsorptionview_flutter.dart b/lib/adsorptionview_flutter.dart index 6fcd53f..b2e6e6a 100644 --- a/lib/adsorptionview_flutter.dart +++ b/lib/adsorptionview_flutter.dart @@ -10,6 +10,7 @@ class AdsorptionView extends StatefulWidget{ final List adsorptionDatas; final GetHearWidget headChild; final GetGeneralItem generalItemChild; + final int initialIndex; final double itemHeight; final double itemWidth; final double cacheExtent; @@ -18,6 +19,7 @@ class AdsorptionView 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, @@ -36,7 +38,20 @@ class AdsorptionView extends StatefulWidget{ ///此控件适用于固定高度的ListView class AdsorptionViewState extends State>{ - 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) { @@ -65,6 +80,7 @@ class AdsorptionViewState extends State extends StatefulWidget{ final ScrollController scrollController; final double itemHeight; final double itemWidth; + final int initialIndex; final GetHearWidget headChild; final List adsorptionDatas; @@ -148,6 +165,7 @@ class HeaderView extends StatefulWidget{ @required this.scrollController, this.itemHeight:50.0, this.itemWidth:double.infinity, + this.initialIndex:0, @required this.headChild, @required this.adsorptionDatas, }); @@ -165,7 +183,14 @@ class HeaderViewState extends State>{ @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((){ //计算滑动了多少距离了