GridView
| Название типа | Поддерживает анимации свойств | Контроллируемый по умолчанию | Может содержать связанное действие | Ссылка |
|---|---|---|---|---|
| GridView | ✗ | ✗ | ✗ | link |
к сведению
Вариант GridView.builder всегда является контроллируемым виджетом
Атрибуты (устаревшие модели)
final class GridViewAttributes
implements DuitAttributes<GridViewAttributes>, DynamicChildHolder {
//Flutter GridView properties
final double mainAxisSpacing,
crossAxisSpacing,
childAspectRatio,
maxCrossAxisExtent;
final double? cacheExtent;
final Clip clipBehavior;
final DragStartBehavior dragStartBehavior;
final ScrollViewKeyboardDismissBehavior keyboardDismissBehavior;
final EdgeInsetsGeometry? padding;
final ScrollPhysics physics;
final bool? primary;
final bool reverse,
shrinkWrap,
addAutomaticKeepAlives,
addRepaintBoundaries,
addSemanticIndexes;
final Axis scrollDirection;
final int? semanticChildCount;
final String? restorationId;
final HitTestBehavior hitTestBehavior;
//GridView.count
final int crossAxisCount;
//Duit specific properties
final GridConstructor constructor;
final String sliverGridDelegateKey, sliverChildDelegateKey;
final Map<String, dynamic> sliverGridDelegateOptions;
//GridView.builder custom props
final List<Map<String, dynamic>>? childObjects;
final ArrayMergeStrategy? mergeStrategy;
final double? scrollEndReachedThreshold;
const GridViewAttributes.common({
required this.sliverGridDelegateKey,
required this.sliverGridDelegateOptions,
this.scrollDirection = Axis.vertical,
this.reverse = false,
this.primary,
this.physics = const AlwaysScrollableScrollPhysics(),
this.shrinkWrap = false,
this.padding,
this.addAutomaticKeepAlives = true,
this.addRepaintBoundaries = true,
this.addSemanticIndexes = true,
this.cacheExtent,
this.semanticChildCount,
this.dragStartBehavior = DragStartBehavior.start,
this.clipBehavior = Clip.hardEdge,
this.keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
this.restorationId,
this.hitTestBehavior = HitTestBehavior.opaque,
}) : constructor = GridConstructor.common,
crossAxisCount = 0,
childAspectRatio = 0.0,
crossAxisSpacing = 0.0,
mainAxisSpacing = 0.0,
maxCrossAxisExtent = 0.0,
sliverChildDelegateKey = "",
childObjects = null,
mergeStrategy = null,
scrollEndReachedThreshold = null;
const GridViewAttributes.count({
required this.crossAxisCount,
this.scrollDirection = Axis.vertical,
this.reverse = false,
this.primary,
this.physics = const AlwaysScrollableScrollPhysics(),
this.shrinkWrap = false,
this.padding,
this.crossAxisSpacing = 0.0,
this.mainAxisSpacing = 0.0,
this.childAspectRatio = 1.0,
this.addAutomaticKeepAlives = true,
this.addRepaintBoundaries = true,
this.addSemanticIndexes = true,
this.cacheExtent,
this.semanticChildCount,
this.dragStartBehavior = DragStartBehavior.start,
this.keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
this.restorationId,
this.clipBehavior = Clip.hardEdge,
this.hitTestBehavior = HitTestBehavior.opaque,
}) : constructor = GridConstructor.count,
maxCrossAxisExtent = 0.0,
sliverGridDelegateKey = "",
sliverChildDelegateKey = "",
childObjects = null,
mergeStrategy = null,
sliverGridDelegateOptions = const {},
scrollEndReachedThreshold = null;
const GridViewAttributes.builder({
required this.sliverGridDelegateKey,
required this.childObjects,
required this.mergeStrategy,
required this.scrollEndReachedThreshold,
required this.sliverGridDelegateOptions,
this.scrollDirection = Axis.vertical,
this.reverse = false,
this.primary,
this.physics = const AlwaysScrollableScrollPhysics(),
this.shrinkWrap = false,
this.padding,
this.addAutomaticKeepAlives = true,
this.addRepaintBoundaries = true,
this.addSemanticIndexes = true,
this.cacheExtent,
this.semanticChildCount,
this.dragStartBehavior = DragStartBehavior.start,
this.clipBehavior = Clip.hardEdge,
this.keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
this.restorationId,
this.hitTestBehavior = HitTestBehavior.opaque,
}) : constructor = GridConstructor.builder,
crossAxisCount = 0,
childAspectRatio = 0.0,
crossAxisSpacing = 0.0,
mainAxisSpacing = 0.0,
maxCrossAxisExtent = 0.0,
sliverChildDelegateKey = "";
const GridViewAttributes.extent({
required this.maxCrossAxisExtent,
this.scrollDirection = Axis.vertical,
this.reverse = false,
this.primary,
this.physics = const AlwaysScrollableScrollPhysics(),
this.shrinkWrap = false,
this.padding,
this.crossAxisSpacing = 0.0,
this.mainAxisSpacing = 0.0,
this.childAspectRatio = 1.0,
this.addAutomaticKeepAlives = true,
this.addRepaintBoundaries = true,
this.addSemanticIndexes = true,
this.cacheExtent,
this.semanticChildCount,
this.dragStartBehavior = DragStartBehavior.start,
this.keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
this.restorationId,
this.clipBehavior = Clip.hardEdge,
this.hitTestBehavior = HitTestBehavior.opaque,
}) : constructor = GridConstructor.extent,
crossAxisCount = 0,
sliverGridDelegateKey = "",
sliverChildDelegateKey = "",
childObjects = null,
mergeStrategy = null,
sliverGridDelegateOptions = const {},
scrollEndReachedThreshold = null;