TabBarView is-a PageableList, doesn't need itemExtent
This commit is contained in:
parent
4fa9e57185
commit
9651db22df
@ -28,7 +28,7 @@ const double _kMinTabWidth = 72.0;
|
|||||||
const double _kMaxTabWidth = 264.0;
|
const double _kMaxTabWidth = 264.0;
|
||||||
const EdgeDims _kTabLabelPadding = const EdgeDims.symmetric(horizontal: 12.0);
|
const EdgeDims _kTabLabelPadding = const EdgeDims.symmetric(horizontal: 12.0);
|
||||||
const double _kTabBarScrollDrag = 0.025;
|
const double _kTabBarScrollDrag = 0.025;
|
||||||
const Duration _kTabBarScroll = const Duration(milliseconds: 200);
|
const Duration _kTabBarScroll = const Duration(milliseconds: 800);
|
||||||
|
|
||||||
class _TabBarParentData extends ContainerBoxParentDataMixin<RenderBox> { }
|
class _TabBarParentData extends ContainerBoxParentDataMixin<RenderBox> { }
|
||||||
|
|
||||||
@ -612,19 +612,17 @@ class _TabBarState extends ScrollableState<TabBar> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class TabBarView<T> extends ScrollableList<T> {
|
class TabBarView<T> extends PageableList<T> {
|
||||||
TabBarView({
|
TabBarView({
|
||||||
Key key,
|
Key key,
|
||||||
this.selection,
|
this.selection,
|
||||||
List<T> items,
|
List<T> items,
|
||||||
ItemBuilder<T> itemBuilder,
|
ItemBuilder<T> itemBuilder
|
||||||
double itemExtent
|
|
||||||
}) : super(
|
}) : super(
|
||||||
key: key,
|
key: key,
|
||||||
scrollDirection: ScrollDirection.horizontal,
|
scrollDirection: ScrollDirection.horizontal,
|
||||||
items: items,
|
items: items,
|
||||||
itemBuilder: itemBuilder,
|
itemBuilder: itemBuilder,
|
||||||
itemExtent: itemExtent,
|
|
||||||
itemsWrap: false
|
itemsWrap: false
|
||||||
) {
|
) {
|
||||||
assert(selection != null);
|
assert(selection != null);
|
||||||
@ -640,9 +638,11 @@ class _NotScrollable extends BoundedBehavior {
|
|||||||
bool get isScrollable => false;
|
bool get isScrollable => false;
|
||||||
}
|
}
|
||||||
|
|
||||||
class _TabBarViewState<T> extends ScrollableListState<T, TabBarView<T>> {
|
class _TabBarViewState<T> extends PageableListState<T, TabBarView<T>> {
|
||||||
|
|
||||||
ScrollBehavior createScrollBehavior() => new _NotScrollable();
|
final _NotScrollable _notScrollable = new _NotScrollable();
|
||||||
|
ScrollBehavior createScrollBehavior() => _notScrollable;
|
||||||
|
ExtentScrollBehavior get scrollBehavior => _notScrollable;
|
||||||
|
|
||||||
List<int> _itemIndices = [0, 1];
|
List<int> _itemIndices = [0, 1];
|
||||||
AnimationDirection _scrollDirection = AnimationDirection.forward;
|
AnimationDirection _scrollDirection = AnimationDirection.forward;
|
||||||
@ -655,10 +655,10 @@ class _TabBarViewState<T> extends ScrollableListState<T, TabBarView<T>> {
|
|||||||
scrollTo(0.0);
|
scrollTo(0.0);
|
||||||
} else if (selectedIndex == config.items.length - 1) {
|
} else if (selectedIndex == config.items.length - 1) {
|
||||||
_itemIndices = <int>[selectedIndex - 1, selectedIndex];
|
_itemIndices = <int>[selectedIndex - 1, selectedIndex];
|
||||||
scrollTo(config.itemExtent);
|
scrollTo(1.0);
|
||||||
} else {
|
} else {
|
||||||
_itemIndices = <int>[selectedIndex - 1, selectedIndex, selectedIndex + 1];
|
_itemIndices = <int>[selectedIndex - 1, selectedIndex, selectedIndex + 1];
|
||||||
scrollTo(config.itemExtent);
|
scrollTo(1.0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -680,12 +680,6 @@ class _TabBarViewState<T> extends ScrollableListState<T, TabBarView<T>> {
|
|||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
void didUpdateConfig(TabBarView oldConfig) {
|
|
||||||
super.didUpdateConfig(oldConfig);
|
|
||||||
if (oldConfig.itemExtent != config.itemExtent && !_performance.isAnimating)
|
|
||||||
_initItemIndicesAndScrollPosition();
|
|
||||||
}
|
|
||||||
|
|
||||||
void _handleStatusChange(PerformanceStatus status) {
|
void _handleStatusChange(PerformanceStatus status) {
|
||||||
final int selectedIndex = config.selection.index;
|
final int selectedIndex = config.selection.index;
|
||||||
final int previousSelectedIndex = config.selection.previousIndex;
|
final int previousSelectedIndex = config.selection.previousIndex;
|
||||||
@ -705,9 +699,9 @@ class _TabBarViewState<T> extends ScrollableListState<T, TabBarView<T>> {
|
|||||||
|
|
||||||
void _handleProgressChange() {
|
void _handleProgressChange() {
|
||||||
if (_scrollDirection == AnimationDirection.forward)
|
if (_scrollDirection == AnimationDirection.forward)
|
||||||
scrollTo(config.itemExtent * _performance.progress);
|
scrollTo(_performance.progress);
|
||||||
else
|
else
|
||||||
scrollTo(config.itemExtent * (1.0 - _performance.progress));
|
scrollTo(1.0 - _performance.progress);
|
||||||
}
|
}
|
||||||
|
|
||||||
int get itemCount => _itemIndices.length;
|
int get itemCount => _itemIndices.length;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user