flutter/examples/widgets/pageable_list.dart

189 lines
4.9 KiB
Dart
Raw Normal View History

Adds PageableList, other scrolling related changes and fixes - PageableList extends ScrollableList One fixed width or height item is visible and centered at a time. Fling and drag gestures scroll to the next/previous item. - Scrollable.scrollTo(), Scrollable.scrollBy(), ensureWidgetIsVisible() API changed The named animation parameter for these methods was replaced by duration and curve. All of the methods now return a Future. The Future completes when the scroll does. This change eliminates the need for Scrollable to temporarily take ownership of a ValueAnimation object (see #645). - Using Future.then() instead of an AnimationPerformance status listener In ensure_visible.dart _handleTap() uses ensureWidgetIsVisible() to center the card roughly as before and then. When the implicit scroll animation is complete, it changes the centered card's label font. The change is made when the Future returned by ensureWidgetIsVisible() completes. - FixedHeightScrollable's itemHeight parameter is now itemExtent If scrollDirection is ScrollDirection.vertical (the default) then itemExtent should be the height of each item; otherwise it should be the width of each item. Replaced _velocityForFlingGesture() in scrollable.dart with Scrollable._eventVelocity() The original version clamped pixels/ms against pixels/sec constants. The new version also deals with scrollDirection. - Plumbed scrollDirection though FixedHeightScrollable and ScrollableList Both classes should now support horizontal scrolling.
2015-08-17 23:48:13 +00:00
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:sky/animation.dart';
import 'package:sky/material.dart';
import 'package:sky/widgets.dart';
Adds PageableList, other scrolling related changes and fixes - PageableList extends ScrollableList One fixed width or height item is visible and centered at a time. Fling and drag gestures scroll to the next/previous item. - Scrollable.scrollTo(), Scrollable.scrollBy(), ensureWidgetIsVisible() API changed The named animation parameter for these methods was replaced by duration and curve. All of the methods now return a Future. The Future completes when the scroll does. This change eliminates the need for Scrollable to temporarily take ownership of a ValueAnimation object (see #645). - Using Future.then() instead of an AnimationPerformance status listener In ensure_visible.dart _handleTap() uses ensureWidgetIsVisible() to center the card roughly as before and then. When the implicit scroll animation is complete, it changes the centered card's label font. The change is made when the Future returned by ensureWidgetIsVisible() completes. - FixedHeightScrollable's itemHeight parameter is now itemExtent If scrollDirection is ScrollDirection.vertical (the default) then itemExtent should be the height of each item; otherwise it should be the width of each item. Replaced _velocityForFlingGesture() in scrollable.dart with Scrollable._eventVelocity() The original version clamped pixels/ms against pixels/sec constants. The new version also deals with scrollDirection. - Plumbed scrollDirection though FixedHeightScrollable and ScrollableList Both classes should now support horizontal scrolling.
2015-08-17 23:48:13 +00:00
class CardModel {
CardModel(this.value, this.size, this.color);
int value;
Size size;
Color color;
String get label => "Card $value";
Key get key => new ObjectKey(this);
Adds PageableList, other scrolling related changes and fixes - PageableList extends ScrollableList One fixed width or height item is visible and centered at a time. Fling and drag gestures scroll to the next/previous item. - Scrollable.scrollTo(), Scrollable.scrollBy(), ensureWidgetIsVisible() API changed The named animation parameter for these methods was replaced by duration and curve. All of the methods now return a Future. The Future completes when the scroll does. This change eliminates the need for Scrollable to temporarily take ownership of a ValueAnimation object (see #645). - Using Future.then() instead of an AnimationPerformance status listener In ensure_visible.dart _handleTap() uses ensureWidgetIsVisible() to center the card roughly as before and then. When the implicit scroll animation is complete, it changes the centered card's label font. The change is made when the Future returned by ensureWidgetIsVisible() completes. - FixedHeightScrollable's itemHeight parameter is now itemExtent If scrollDirection is ScrollDirection.vertical (the default) then itemExtent should be the height of each item; otherwise it should be the width of each item. Replaced _velocityForFlingGesture() in scrollable.dart with Scrollable._eventVelocity() The original version clamped pixels/ms against pixels/sec constants. The new version also deals with scrollDirection. - Plumbed scrollDirection though FixedHeightScrollable and ScrollableList Both classes should now support horizontal scrolling.
2015-08-17 23:48:13 +00:00
}
class PageableListApp extends App {
Adds PageableList, other scrolling related changes and fixes - PageableList extends ScrollableList One fixed width or height item is visible and centered at a time. Fling and drag gestures scroll to the next/previous item. - Scrollable.scrollTo(), Scrollable.scrollBy(), ensureWidgetIsVisible() API changed The named animation parameter for these methods was replaced by duration and curve. All of the methods now return a Future. The Future completes when the scroll does. This change eliminates the need for Scrollable to temporarily take ownership of a ValueAnimation object (see #645). - Using Future.then() instead of an AnimationPerformance status listener In ensure_visible.dart _handleTap() uses ensureWidgetIsVisible() to center the card roughly as before and then. When the implicit scroll animation is complete, it changes the centered card's label font. The change is made when the Future returned by ensureWidgetIsVisible() completes. - FixedHeightScrollable's itemHeight parameter is now itemExtent If scrollDirection is ScrollDirection.vertical (the default) then itemExtent should be the height of each item; otherwise it should be the width of each item. Replaced _velocityForFlingGesture() in scrollable.dart with Scrollable._eventVelocity() The original version clamped pixels/ms against pixels/sec constants. The new version also deals with scrollDirection. - Plumbed scrollDirection though FixedHeightScrollable and ScrollableList Both classes should now support horizontal scrolling.
2015-08-17 23:48:13 +00:00
static const TextStyle cardLabelStyle =
const TextStyle(color: Colors.white, fontSize: 18.0, fontWeight: bold);
Adds PageableList, other scrolling related changes and fixes - PageableList extends ScrollableList One fixed width or height item is visible and centered at a time. Fling and drag gestures scroll to the next/previous item. - Scrollable.scrollTo(), Scrollable.scrollBy(), ensureWidgetIsVisible() API changed The named animation parameter for these methods was replaced by duration and curve. All of the methods now return a Future. The Future completes when the scroll does. This change eliminates the need for Scrollable to temporarily take ownership of a ValueAnimation object (see #645). - Using Future.then() instead of an AnimationPerformance status listener In ensure_visible.dart _handleTap() uses ensureWidgetIsVisible() to center the card roughly as before and then. When the implicit scroll animation is complete, it changes the centered card's label font. The change is made when the Future returned by ensureWidgetIsVisible() completes. - FixedHeightScrollable's itemHeight parameter is now itemExtent If scrollDirection is ScrollDirection.vertical (the default) then itemExtent should be the height of each item; otherwise it should be the width of each item. Replaced _velocityForFlingGesture() in scrollable.dart with Scrollable._eventVelocity() The original version clamped pixels/ms against pixels/sec constants. The new version also deals with scrollDirection. - Plumbed scrollDirection though FixedHeightScrollable and ScrollableList Both classes should now support horizontal scrolling.
2015-08-17 23:48:13 +00:00
List<CardModel> cardModels;
Size pageSize = new Size(200.0, 200.0);
ScrollDirection scrollDirection = ScrollDirection.horizontal;
bool itemsWrap = false;
Adds PageableList, other scrolling related changes and fixes - PageableList extends ScrollableList One fixed width or height item is visible and centered at a time. Fling and drag gestures scroll to the next/previous item. - Scrollable.scrollTo(), Scrollable.scrollBy(), ensureWidgetIsVisible() API changed The named animation parameter for these methods was replaced by duration and curve. All of the methods now return a Future. The Future completes when the scroll does. This change eliminates the need for Scrollable to temporarily take ownership of a ValueAnimation object (see #645). - Using Future.then() instead of an AnimationPerformance status listener In ensure_visible.dart _handleTap() uses ensureWidgetIsVisible() to center the card roughly as before and then. When the implicit scroll animation is complete, it changes the centered card's label font. The change is made when the Future returned by ensureWidgetIsVisible() completes. - FixedHeightScrollable's itemHeight parameter is now itemExtent If scrollDirection is ScrollDirection.vertical (the default) then itemExtent should be the height of each item; otherwise it should be the width of each item. Replaced _velocityForFlingGesture() in scrollable.dart with Scrollable._eventVelocity() The original version clamped pixels/ms against pixels/sec constants. The new version also deals with scrollDirection. - Plumbed scrollDirection though FixedHeightScrollable and ScrollableList Both classes should now support horizontal scrolling.
2015-08-17 23:48:13 +00:00
void initState() {
List<Size> cardSizes = [
[100.0, 300.0], [300.0, 100.0], [200.0, 400.0], [400.0, 400.0], [300.0, 400.0]
]
.map((args) => new Size(args[0], args[1]))
.toList();
cardModels = new List.generate(cardSizes.length, (i) {
Color color = Color.lerp(Colors.red[300], Colors.blue[900], i / cardSizes.length);
Adds PageableList, other scrolling related changes and fixes - PageableList extends ScrollableList One fixed width or height item is visible and centered at a time. Fling and drag gestures scroll to the next/previous item. - Scrollable.scrollTo(), Scrollable.scrollBy(), ensureWidgetIsVisible() API changed The named animation parameter for these methods was replaced by duration and curve. All of the methods now return a Future. The Future completes when the scroll does. This change eliminates the need for Scrollable to temporarily take ownership of a ValueAnimation object (see #645). - Using Future.then() instead of an AnimationPerformance status listener In ensure_visible.dart _handleTap() uses ensureWidgetIsVisible() to center the card roughly as before and then. When the implicit scroll animation is complete, it changes the centered card's label font. The change is made when the Future returned by ensureWidgetIsVisible() completes. - FixedHeightScrollable's itemHeight parameter is now itemExtent If scrollDirection is ScrollDirection.vertical (the default) then itemExtent should be the height of each item; otherwise it should be the width of each item. Replaced _velocityForFlingGesture() in scrollable.dart with Scrollable._eventVelocity() The original version clamped pixels/ms against pixels/sec constants. The new version also deals with scrollDirection. - Plumbed scrollDirection though FixedHeightScrollable and ScrollableList Both classes should now support horizontal scrolling.
2015-08-17 23:48:13 +00:00
return new CardModel(i, cardSizes[i], color);
});
super.initState();
}
void updatePageSize(Size newSize) {
setState(() {
pageSize = newSize;
});
}
Widget buildCard(CardModel cardModel) {
Widget card = new Card(
color: cardModel.color,
child: new Container(
width: cardModel.size.width,
height: cardModel.size.height,
padding: const EdgeDims.all(8.0),
child: new Center(child: new Text(cardModel.label, style: cardLabelStyle))
)
);
BoxConstraints constraints = (scrollDirection == ScrollDirection.vertical)
? new BoxConstraints.tightFor(height: pageSize.height)
: new BoxConstraints.tightFor(width: pageSize.width);
Adds PageableList, other scrolling related changes and fixes - PageableList extends ScrollableList One fixed width or height item is visible and centered at a time. Fling and drag gestures scroll to the next/previous item. - Scrollable.scrollTo(), Scrollable.scrollBy(), ensureWidgetIsVisible() API changed The named animation parameter for these methods was replaced by duration and curve. All of the methods now return a Future. The Future completes when the scroll does. This change eliminates the need for Scrollable to temporarily take ownership of a ValueAnimation object (see #645). - Using Future.then() instead of an AnimationPerformance status listener In ensure_visible.dart _handleTap() uses ensureWidgetIsVisible() to center the card roughly as before and then. When the implicit scroll animation is complete, it changes the centered card's label font. The change is made when the Future returned by ensureWidgetIsVisible() completes. - FixedHeightScrollable's itemHeight parameter is now itemExtent If scrollDirection is ScrollDirection.vertical (the default) then itemExtent should be the height of each item; otherwise it should be the width of each item. Replaced _velocityForFlingGesture() in scrollable.dart with Scrollable._eventVelocity() The original version clamped pixels/ms against pixels/sec constants. The new version also deals with scrollDirection. - Plumbed scrollDirection though FixedHeightScrollable and ScrollableList Both classes should now support horizontal scrolling.
2015-08-17 23:48:13 +00:00
return new Container(
key: cardModel.key,
constraints: constraints,
Adds PageableList, other scrolling related changes and fixes - PageableList extends ScrollableList One fixed width or height item is visible and centered at a time. Fling and drag gestures scroll to the next/previous item. - Scrollable.scrollTo(), Scrollable.scrollBy(), ensureWidgetIsVisible() API changed The named animation parameter for these methods was replaced by duration and curve. All of the methods now return a Future. The Future completes when the scroll does. This change eliminates the need for Scrollable to temporarily take ownership of a ValueAnimation object (see #645). - Using Future.then() instead of an AnimationPerformance status listener In ensure_visible.dart _handleTap() uses ensureWidgetIsVisible() to center the card roughly as before and then. When the implicit scroll animation is complete, it changes the centered card's label font. The change is made when the Future returned by ensureWidgetIsVisible() completes. - FixedHeightScrollable's itemHeight parameter is now itemExtent If scrollDirection is ScrollDirection.vertical (the default) then itemExtent should be the height of each item; otherwise it should be the width of each item. Replaced _velocityForFlingGesture() in scrollable.dart with Scrollable._eventVelocity() The original version clamped pixels/ms against pixels/sec constants. The new version also deals with scrollDirection. - Plumbed scrollDirection though FixedHeightScrollable and ScrollableList Both classes should now support horizontal scrolling.
2015-08-17 23:48:13 +00:00
child: new Center(child: card)
);
}
void switchScrollDirection() {
setState(() {
scrollDirection = (scrollDirection == ScrollDirection.vertical)
? ScrollDirection.horizontal
: ScrollDirection.vertical;
});
}
void toggleItemsWrap() {
setState(() {
itemsWrap = !itemsWrap;
});
}
bool _drawerShowing = false;
AnimationStatus _drawerStatus = AnimationStatus.dismissed;
void _handleOpenDrawer() {
setState(() {
_drawerShowing = true;
_drawerStatus = AnimationStatus.forward;
});
}
void _handleDrawerDismissed() {
setState(() {
_drawerStatus = AnimationStatus.dismissed;
});
}
Drawer buildDrawer() {
if (_drawerStatus == AnimationStatus.dismissed)
return null;
return new Drawer(
level: 3,
showing: _drawerShowing,
onDismissed: _handleDrawerDismissed,
children: [
new DrawerHeader(child: new Text('Options')),
new DrawerItem(
icon: 'navigation/more_horiz',
selected: scrollDirection == ScrollDirection.horizontal,
child: new Text('Horizontal Layout'),
onPressed: switchScrollDirection
),
new DrawerItem(
icon: 'navigation/more_vert',
selected: scrollDirection == ScrollDirection.vertical,
child: new Text('Vertical Layout'),
onPressed: switchScrollDirection
),
new DrawerItem(
onPressed: toggleItemsWrap,
child: new Row([
new Flexible(child: new Text('Scrolling wraps around')),
new Checkbox(value: itemsWrap)
])
)
]
);
}
Widget buildToolBar() {
return new ToolBar(
left: new IconButton(icon: "navigation/menu", onPressed: _handleOpenDrawer),
center: new Text('PageableList'),
right: [
new Text(scrollDirection == ScrollDirection.horizontal ? "horizontal" : "vertical")
]
);
}
Widget buildBody() {
Adds PageableList, other scrolling related changes and fixes - PageableList extends ScrollableList One fixed width or height item is visible and centered at a time. Fling and drag gestures scroll to the next/previous item. - Scrollable.scrollTo(), Scrollable.scrollBy(), ensureWidgetIsVisible() API changed The named animation parameter for these methods was replaced by duration and curve. All of the methods now return a Future. The Future completes when the scroll does. This change eliminates the need for Scrollable to temporarily take ownership of a ValueAnimation object (see #645). - Using Future.then() instead of an AnimationPerformance status listener In ensure_visible.dart _handleTap() uses ensureWidgetIsVisible() to center the card roughly as before and then. When the implicit scroll animation is complete, it changes the centered card's label font. The change is made when the Future returned by ensureWidgetIsVisible() completes. - FixedHeightScrollable's itemHeight parameter is now itemExtent If scrollDirection is ScrollDirection.vertical (the default) then itemExtent should be the height of each item; otherwise it should be the width of each item. Replaced _velocityForFlingGesture() in scrollable.dart with Scrollable._eventVelocity() The original version clamped pixels/ms against pixels/sec constants. The new version also deals with scrollDirection. - Plumbed scrollDirection though FixedHeightScrollable and ScrollableList Both classes should now support horizontal scrolling.
2015-08-17 23:48:13 +00:00
Widget list = new PageableList<CardModel>(
items: cardModels,
itemsWrap: itemsWrap,
Adds PageableList, other scrolling related changes and fixes - PageableList extends ScrollableList One fixed width or height item is visible and centered at a time. Fling and drag gestures scroll to the next/previous item. - Scrollable.scrollTo(), Scrollable.scrollBy(), ensureWidgetIsVisible() API changed The named animation parameter for these methods was replaced by duration and curve. All of the methods now return a Future. The Future completes when the scroll does. This change eliminates the need for Scrollable to temporarily take ownership of a ValueAnimation object (see #645). - Using Future.then() instead of an AnimationPerformance status listener In ensure_visible.dart _handleTap() uses ensureWidgetIsVisible() to center the card roughly as before and then. When the implicit scroll animation is complete, it changes the centered card's label font. The change is made when the Future returned by ensureWidgetIsVisible() completes. - FixedHeightScrollable's itemHeight parameter is now itemExtent If scrollDirection is ScrollDirection.vertical (the default) then itemExtent should be the height of each item; otherwise it should be the width of each item. Replaced _velocityForFlingGesture() in scrollable.dart with Scrollable._eventVelocity() The original version clamped pixels/ms against pixels/sec constants. The new version also deals with scrollDirection. - Plumbed scrollDirection though FixedHeightScrollable and ScrollableList Both classes should now support horizontal scrolling.
2015-08-17 23:48:13 +00:00
itemBuilder: buildCard,
scrollDirection: scrollDirection,
itemExtent: (scrollDirection == ScrollDirection.vertical)
? pageSize.height
: pageSize.width
Adds PageableList, other scrolling related changes and fixes - PageableList extends ScrollableList One fixed width or height item is visible and centered at a time. Fling and drag gestures scroll to the next/previous item. - Scrollable.scrollTo(), Scrollable.scrollBy(), ensureWidgetIsVisible() API changed The named animation parameter for these methods was replaced by duration and curve. All of the methods now return a Future. The Future completes when the scroll does. This change eliminates the need for Scrollable to temporarily take ownership of a ValueAnimation object (see #645). - Using Future.then() instead of an AnimationPerformance status listener In ensure_visible.dart _handleTap() uses ensureWidgetIsVisible() to center the card roughly as before and then. When the implicit scroll animation is complete, it changes the centered card's label font. The change is made when the Future returned by ensureWidgetIsVisible() completes. - FixedHeightScrollable's itemHeight parameter is now itemExtent If scrollDirection is ScrollDirection.vertical (the default) then itemExtent should be the height of each item; otherwise it should be the width of each item. Replaced _velocityForFlingGesture() in scrollable.dart with Scrollable._eventVelocity() The original version clamped pixels/ms against pixels/sec constants. The new version also deals with scrollDirection. - Plumbed scrollDirection though FixedHeightScrollable and ScrollableList Both classes should now support horizontal scrolling.
2015-08-17 23:48:13 +00:00
);
return new SizeObserver(
callback: updatePageSize,
child: new Container(
child: list,
decoration: new BoxDecoration(backgroundColor: Theme.of(this).primarySwatch[50])
)
);
}
Adds PageableList, other scrolling related changes and fixes - PageableList extends ScrollableList One fixed width or height item is visible and centered at a time. Fling and drag gestures scroll to the next/previous item. - Scrollable.scrollTo(), Scrollable.scrollBy(), ensureWidgetIsVisible() API changed The named animation parameter for these methods was replaced by duration and curve. All of the methods now return a Future. The Future completes when the scroll does. This change eliminates the need for Scrollable to temporarily take ownership of a ValueAnimation object (see #645). - Using Future.then() instead of an AnimationPerformance status listener In ensure_visible.dart _handleTap() uses ensureWidgetIsVisible() to center the card roughly as before and then. When the implicit scroll animation is complete, it changes the centered card's label font. The change is made when the Future returned by ensureWidgetIsVisible() completes. - FixedHeightScrollable's itemHeight parameter is now itemExtent If scrollDirection is ScrollDirection.vertical (the default) then itemExtent should be the height of each item; otherwise it should be the width of each item. Replaced _velocityForFlingGesture() in scrollable.dart with Scrollable._eventVelocity() The original version clamped pixels/ms against pixels/sec constants. The new version also deals with scrollDirection. - Plumbed scrollDirection though FixedHeightScrollable and ScrollableList Both classes should now support horizontal scrolling.
2015-08-17 23:48:13 +00:00
Widget build() {
Adds PageableList, other scrolling related changes and fixes - PageableList extends ScrollableList One fixed width or height item is visible and centered at a time. Fling and drag gestures scroll to the next/previous item. - Scrollable.scrollTo(), Scrollable.scrollBy(), ensureWidgetIsVisible() API changed The named animation parameter for these methods was replaced by duration and curve. All of the methods now return a Future. The Future completes when the scroll does. This change eliminates the need for Scrollable to temporarily take ownership of a ValueAnimation object (see #645). - Using Future.then() instead of an AnimationPerformance status listener In ensure_visible.dart _handleTap() uses ensureWidgetIsVisible() to center the card roughly as before and then. When the implicit scroll animation is complete, it changes the centered card's label font. The change is made when the Future returned by ensureWidgetIsVisible() completes. - FixedHeightScrollable's itemHeight parameter is now itemExtent If scrollDirection is ScrollDirection.vertical (the default) then itemExtent should be the height of each item; otherwise it should be the width of each item. Replaced _velocityForFlingGesture() in scrollable.dart with Scrollable._eventVelocity() The original version clamped pixels/ms against pixels/sec constants. The new version also deals with scrollDirection. - Plumbed scrollDirection though FixedHeightScrollable and ScrollableList Both classes should now support horizontal scrolling.
2015-08-17 23:48:13 +00:00
return new IconTheme(
data: const IconThemeData(color: IconThemeColor.white),
child: new Theme(
data: new ThemeData(
brightness: ThemeBrightness.light,
primarySwatch: Colors.blue,
accentColor: Colors.redAccent[200]
Adds PageableList, other scrolling related changes and fixes - PageableList extends ScrollableList One fixed width or height item is visible and centered at a time. Fling and drag gestures scroll to the next/previous item. - Scrollable.scrollTo(), Scrollable.scrollBy(), ensureWidgetIsVisible() API changed The named animation parameter for these methods was replaced by duration and curve. All of the methods now return a Future. The Future completes when the scroll does. This change eliminates the need for Scrollable to temporarily take ownership of a ValueAnimation object (see #645). - Using Future.then() instead of an AnimationPerformance status listener In ensure_visible.dart _handleTap() uses ensureWidgetIsVisible() to center the card roughly as before and then. When the implicit scroll animation is complete, it changes the centered card's label font. The change is made when the Future returned by ensureWidgetIsVisible() completes. - FixedHeightScrollable's itemHeight parameter is now itemExtent If scrollDirection is ScrollDirection.vertical (the default) then itemExtent should be the height of each item; otherwise it should be the width of each item. Replaced _velocityForFlingGesture() in scrollable.dart with Scrollable._eventVelocity() The original version clamped pixels/ms against pixels/sec constants. The new version also deals with scrollDirection. - Plumbed scrollDirection though FixedHeightScrollable and ScrollableList Both classes should now support horizontal scrolling.
2015-08-17 23:48:13 +00:00
),
child: new Title(
title: 'PageableList',
Adds PageableList, other scrolling related changes and fixes - PageableList extends ScrollableList One fixed width or height item is visible and centered at a time. Fling and drag gestures scroll to the next/previous item. - Scrollable.scrollTo(), Scrollable.scrollBy(), ensureWidgetIsVisible() API changed The named animation parameter for these methods was replaced by duration and curve. All of the methods now return a Future. The Future completes when the scroll does. This change eliminates the need for Scrollable to temporarily take ownership of a ValueAnimation object (see #645). - Using Future.then() instead of an AnimationPerformance status listener In ensure_visible.dart _handleTap() uses ensureWidgetIsVisible() to center the card roughly as before and then. When the implicit scroll animation is complete, it changes the centered card's label font. The change is made when the Future returned by ensureWidgetIsVisible() completes. - FixedHeightScrollable's itemHeight parameter is now itemExtent If scrollDirection is ScrollDirection.vertical (the default) then itemExtent should be the height of each item; otherwise it should be the width of each item. Replaced _velocityForFlingGesture() in scrollable.dart with Scrollable._eventVelocity() The original version clamped pixels/ms against pixels/sec constants. The new version also deals with scrollDirection. - Plumbed scrollDirection though FixedHeightScrollable and ScrollableList Both classes should now support horizontal scrolling.
2015-08-17 23:48:13 +00:00
child: new Scaffold(
drawer: buildDrawer(),
toolbar: buildToolBar(),
body: buildBody()
Adds PageableList, other scrolling related changes and fixes - PageableList extends ScrollableList One fixed width or height item is visible and centered at a time. Fling and drag gestures scroll to the next/previous item. - Scrollable.scrollTo(), Scrollable.scrollBy(), ensureWidgetIsVisible() API changed The named animation parameter for these methods was replaced by duration and curve. All of the methods now return a Future. The Future completes when the scroll does. This change eliminates the need for Scrollable to temporarily take ownership of a ValueAnimation object (see #645). - Using Future.then() instead of an AnimationPerformance status listener In ensure_visible.dart _handleTap() uses ensureWidgetIsVisible() to center the card roughly as before and then. When the implicit scroll animation is complete, it changes the centered card's label font. The change is made when the Future returned by ensureWidgetIsVisible() completes. - FixedHeightScrollable's itemHeight parameter is now itemExtent If scrollDirection is ScrollDirection.vertical (the default) then itemExtent should be the height of each item; otherwise it should be the width of each item. Replaced _velocityForFlingGesture() in scrollable.dart with Scrollable._eventVelocity() The original version clamped pixels/ms against pixels/sec constants. The new version also deals with scrollDirection. - Plumbed scrollDirection though FixedHeightScrollable and ScrollableList Both classes should now support horizontal scrolling.
2015-08-17 23:48:13 +00:00
)
)
)
);
}
}
void main() {
runApp(new PageableListApp());
Adds PageableList, other scrolling related changes and fixes - PageableList extends ScrollableList One fixed width or height item is visible and centered at a time. Fling and drag gestures scroll to the next/previous item. - Scrollable.scrollTo(), Scrollable.scrollBy(), ensureWidgetIsVisible() API changed The named animation parameter for these methods was replaced by duration and curve. All of the methods now return a Future. The Future completes when the scroll does. This change eliminates the need for Scrollable to temporarily take ownership of a ValueAnimation object (see #645). - Using Future.then() instead of an AnimationPerformance status listener In ensure_visible.dart _handleTap() uses ensureWidgetIsVisible() to center the card roughly as before and then. When the implicit scroll animation is complete, it changes the centered card's label font. The change is made when the Future returned by ensureWidgetIsVisible() completes. - FixedHeightScrollable's itemHeight parameter is now itemExtent If scrollDirection is ScrollDirection.vertical (the default) then itemExtent should be the height of each item; otherwise it should be the width of each item. Replaced _velocityForFlingGesture() in scrollable.dart with Scrollable._eventVelocity() The original version clamped pixels/ms against pixels/sec constants. The new version also deals with scrollDirection. - Plumbed scrollDirection though FixedHeightScrollable and ScrollableList Both classes should now support horizontal scrolling.
2015-08-17 23:48:13 +00:00
}