Commit 18b78cfa authored by Hans Muller's avatar Hans Muller

Enable initializing Scrollable scrollOffset

Added Scrollable named parameter initializeScrollOffset. If unspecified, then the initial value of scrollOffset is 0.0 as before.
parent e1933af3
...@@ -35,18 +35,22 @@ abstract class Scrollable extends StatefulComponent { ...@@ -35,18 +35,22 @@ abstract class Scrollable extends StatefulComponent {
Scrollable({ Scrollable({
Key key, Key key,
this.initialScrollOffset,
this.scrollDirection: ScrollDirection.vertical this.scrollDirection: ScrollDirection.vertical
}) : super(key: key) { }) : super(key: key) {
assert(scrollDirection == ScrollDirection.vertical || assert(scrollDirection == ScrollDirection.vertical ||
scrollDirection == ScrollDirection.horizontal); scrollDirection == ScrollDirection.horizontal);
} }
double initialScrollOffset;
ScrollDirection scrollDirection; ScrollDirection scrollDirection;
AnimatedSimulation _toEndAnimation; // See _startToEndAnimation() AnimatedSimulation _toEndAnimation; // See _startToEndAnimation()
ValueAnimation<double> _toOffsetAnimation; // Started by scrollTo() ValueAnimation<double> _toOffsetAnimation; // Started by scrollTo()
void initState() { void initState() {
if (initialScrollOffset is double)
_scrollOffset = initialScrollOffset;
_toEndAnimation = new AnimatedSimulation(_setScrollOffset); _toEndAnimation = new AnimatedSimulation(_setScrollOffset);
_toOffsetAnimation = new ValueAnimation<double>() _toOffsetAnimation = new ValueAnimation<double>()
..addListener(() { ..addListener(() {
...@@ -261,8 +265,13 @@ class ScrollableViewport extends Scrollable { ...@@ -261,8 +265,13 @@ class ScrollableViewport extends Scrollable {
ScrollableViewport({ ScrollableViewport({
Key key, Key key,
this.child, this.child,
double initialScrollOffset,
ScrollDirection scrollDirection: ScrollDirection.vertical ScrollDirection scrollDirection: ScrollDirection.vertical
}) : super(key: key, scrollDirection: scrollDirection); }) : super(
key: key,
scrollDirection: scrollDirection,
initialScrollOffset: initialScrollOffset
);
Widget child; Widget child;
...@@ -312,10 +321,12 @@ class ScrollableViewport extends Scrollable { ...@@ -312,10 +321,12 @@ class ScrollableViewport extends Scrollable {
class Block extends Component { class Block extends Component {
Block(this.children, { Block(this.children, {
Key key, Key key,
this.initialScrollOffset,
this.scrollDirection: ScrollDirection.vertical this.scrollDirection: ScrollDirection.vertical
}) : super(key: key); }) : super(key: key);
final List<Widget> children; final List<Widget> children;
final double initialScrollOffset;
final ScrollDirection scrollDirection; final ScrollDirection scrollDirection;
BlockDirection get _direction { BlockDirection get _direction {
...@@ -326,6 +337,7 @@ class Block extends Component { ...@@ -326,6 +337,7 @@ class Block extends Component {
Widget build() { Widget build() {
return new ScrollableViewport( return new ScrollableViewport(
initialScrollOffset: initialScrollOffset,
scrollDirection: scrollDirection, scrollDirection: scrollDirection,
child: new BlockBody(children, direction: _direction) child: new BlockBody(children, direction: _direction)
); );
...@@ -340,10 +352,11 @@ class Block extends Component { ...@@ -340,10 +352,11 @@ class Block extends Component {
abstract class ScrollableWidgetList extends Scrollable { abstract class ScrollableWidgetList extends Scrollable {
ScrollableWidgetList({ ScrollableWidgetList({
Key key, Key key,
double initialScrollOffset,
ScrollDirection scrollDirection: ScrollDirection.vertical, ScrollDirection scrollDirection: ScrollDirection.vertical,
this.itemExtent, this.itemExtent,
this.padding this.padding
}) : super(key: key, scrollDirection: scrollDirection) { }) : super(key: key, initialScrollOffset: initialScrollOffset, scrollDirection: scrollDirection) {
assert(itemExtent != null); assert(itemExtent != null);
} }
...@@ -488,13 +501,19 @@ typedef Widget ItemBuilder<T>(T item); ...@@ -488,13 +501,19 @@ typedef Widget ItemBuilder<T>(T item);
class ScrollableList<T> extends ScrollableWidgetList { class ScrollableList<T> extends ScrollableWidgetList {
ScrollableList({ ScrollableList({
Key key, Key key,
double initialScrollOffset,
ScrollDirection scrollDirection: ScrollDirection.vertical, ScrollDirection scrollDirection: ScrollDirection.vertical,
this.items, this.items,
this.itemBuilder, this.itemBuilder,
this.itemsWrap: false, this.itemsWrap: false,
double itemExtent, double itemExtent,
EdgeDims padding EdgeDims padding
}) : super(key: key, scrollDirection: scrollDirection, itemExtent: itemExtent, padding: padding); }) : super(
key: key,
initialScrollOffset: initialScrollOffset,
scrollDirection: scrollDirection,
itemExtent: itemExtent,
padding: padding);
List<T> items; List<T> items;
ItemBuilder<T> itemBuilder; ItemBuilder<T> itemBuilder;
...@@ -526,6 +545,7 @@ class ScrollableList<T> extends ScrollableWidgetList { ...@@ -526,6 +545,7 @@ class ScrollableList<T> extends ScrollableWidgetList {
class PageableList<T> extends ScrollableList<T> { class PageableList<T> extends ScrollableList<T> {
PageableList({ PageableList({
Key key, Key key,
double initialScrollOffset,
ScrollDirection scrollDirection: ScrollDirection.horizontal, ScrollDirection scrollDirection: ScrollDirection.horizontal,
List<T> items, List<T> items,
ItemBuilder<T> itemBuilder, ItemBuilder<T> itemBuilder,
...@@ -536,6 +556,7 @@ class PageableList<T> extends ScrollableList<T> { ...@@ -536,6 +556,7 @@ class PageableList<T> extends ScrollableList<T> {
this.curve: ease this.curve: ease
}) : super( }) : super(
key: key, key: key,
initialScrollOffset: initialScrollOffset,
scrollDirection: scrollDirection, scrollDirection: scrollDirection,
items: items, items: items,
itemBuilder: itemBuilder, itemBuilder: itemBuilder,
...@@ -587,10 +608,11 @@ class PageableList<T> extends ScrollableList<T> { ...@@ -587,10 +608,11 @@ class PageableList<T> extends ScrollableList<T> {
class ScrollableMixedWidgetList extends Scrollable { class ScrollableMixedWidgetList extends Scrollable {
ScrollableMixedWidgetList({ ScrollableMixedWidgetList({
Key key, Key key,
double initialScrollOffset,
this.builder, this.builder,
this.token, this.token,
this.layoutState this.layoutState
}) : super(key: key); }) : super(key: key, initialScrollOffset: initialScrollOffset);
IndexedBuilder builder; IndexedBuilder builder;
Object token; Object token;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment