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 {
Scrollable({
Key key,
this.initialScrollOffset,
this.scrollDirection: ScrollDirection.vertical
}) : super(key: key) {
assert(scrollDirection == ScrollDirection.vertical ||
scrollDirection == ScrollDirection.horizontal);
}
double initialScrollOffset;
ScrollDirection scrollDirection;
AnimatedSimulation _toEndAnimation; // See _startToEndAnimation()
ValueAnimation<double> _toOffsetAnimation; // Started by scrollTo()
void initState() {
if (initialScrollOffset is double)
_scrollOffset = initialScrollOffset;
_toEndAnimation = new AnimatedSimulation(_setScrollOffset);
_toOffsetAnimation = new ValueAnimation<double>()
..addListener(() {
......@@ -261,8 +265,13 @@ class ScrollableViewport extends Scrollable {
ScrollableViewport({
Key key,
this.child,
double initialScrollOffset,
ScrollDirection scrollDirection: ScrollDirection.vertical
}) : super(key: key, scrollDirection: scrollDirection);
}) : super(
key: key,
scrollDirection: scrollDirection,
initialScrollOffset: initialScrollOffset
);
Widget child;
......@@ -312,10 +321,12 @@ class ScrollableViewport extends Scrollable {
class Block extends Component {
Block(this.children, {
Key key,
this.initialScrollOffset,
this.scrollDirection: ScrollDirection.vertical
}) : super(key: key);
final List<Widget> children;
final double initialScrollOffset;
final ScrollDirection scrollDirection;
BlockDirection get _direction {
......@@ -326,6 +337,7 @@ class Block extends Component {
Widget build() {
return new ScrollableViewport(
initialScrollOffset: initialScrollOffset,
scrollDirection: scrollDirection,
child: new BlockBody(children, direction: _direction)
);
......@@ -340,10 +352,11 @@ class Block extends Component {
abstract class ScrollableWidgetList extends Scrollable {
ScrollableWidgetList({
Key key,
double initialScrollOffset,
ScrollDirection scrollDirection: ScrollDirection.vertical,
this.itemExtent,
this.padding
}) : super(key: key, scrollDirection: scrollDirection) {
}) : super(key: key, initialScrollOffset: initialScrollOffset, scrollDirection: scrollDirection) {
assert(itemExtent != null);
}
......@@ -488,13 +501,19 @@ typedef Widget ItemBuilder<T>(T item);
class ScrollableList<T> extends ScrollableWidgetList {
ScrollableList({
Key key,
double initialScrollOffset,
ScrollDirection scrollDirection: ScrollDirection.vertical,
this.items,
this.itemBuilder,
this.itemsWrap: false,
double itemExtent,
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;
ItemBuilder<T> itemBuilder;
......@@ -526,6 +545,7 @@ class ScrollableList<T> extends ScrollableWidgetList {
class PageableList<T> extends ScrollableList<T> {
PageableList({
Key key,
double initialScrollOffset,
ScrollDirection scrollDirection: ScrollDirection.horizontal,
List<T> items,
ItemBuilder<T> itemBuilder,
......@@ -536,6 +556,7 @@ class PageableList<T> extends ScrollableList<T> {
this.curve: ease
}) : super(
key: key,
initialScrollOffset: initialScrollOffset,
scrollDirection: scrollDirection,
items: items,
itemBuilder: itemBuilder,
......@@ -587,10 +608,11 @@ class PageableList<T> extends ScrollableList<T> {
class ScrollableMixedWidgetList extends Scrollable {
ScrollableMixedWidgetList({
Key key,
double initialScrollOffset,
this.builder,
this.token,
this.layoutState
}) : super(key: key);
}) : super(key: key, initialScrollOffset: initialScrollOffset);
IndexedBuilder builder;
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