ListView
| Название типа | Поддерживает анимации свойств | Контроллируемый по умолчанию | Может содержать связанное действие | Ссылка |
|---|---|---|---|---|
| ListView | ✗ | ✗ | ✔️ | link |
к сведению
Вариант ListView.builder и ListView.separated всегда является контроллируемым виджетом
Атрибуты (устаревшие модели)
final class ListViewAttributes
implements DuitAttributes<ListViewAttributes>, DynamicChildHolder {
//<editor-fold desc="Flutter widget props">
final Axis? scrollDirection;
final bool? reverse,
shrinkWrap,
addSemanticIndexes,
addRepaintBoundaries,
addAutomaticKeepAlives,
primary;
final ScrollPhysics? physics;
final EdgeInsets? padding;
final double? anchor, cacheExtent, itemExtent;
final int? semanticChildCount;
final DragStartBehavior? dragStartBehavior;
final ScrollViewKeyboardDismissBehavior? keyboardDismissBehavior;
final String? restorationId;
final Clip? clipBehavior;
//</editor-fold>
//<editor-fold desc="Special Duit properties">
/// 0 - ListView,
///
/// 1 - ListView.builder,
///
/// 2 - ListView.separated
final int type;
final Map<String, dynamic>? separator;
final List<Map<String, dynamic>>? childObjects;
final ArrayMergeStrategy? mergeStrategy;
final double? scrollEndReachedThreshold;
//</editor-fold>
//<editor-fold desc="Ctor, copy, mapping">
ListViewAttributes({
required this.scrollDirection,
required this.reverse,
required this.shrinkWrap,
required this.addSemanticIndexes,
required this.addRepaintBoundaries,
required this.addAutomaticKeepAlives,
required this.primary,
required this.physics,
required this.anchor,
required this.cacheExtent,
required this.semanticChildCount,
required this.dragStartBehavior,
required this.keyboardDismissBehavior,
required this.restorationId,
required this.clipBehavior,
required this.padding,
required this.itemExtent,
}) : separator = null,
childObjects = null,
mergeStrategy = ArrayMergeStrategy.addToEnd,
scrollEndReachedThreshold = null,
type = 0;
ListViewAttributes.builder({
required this.scrollDirection,
required this.reverse,
required this.shrinkWrap,
required this.addSemanticIndexes,
required this.addRepaintBoundaries,
required this.addAutomaticKeepAlives,
required this.primary,
required this.physics,
required this.anchor,
required this.cacheExtent,
required this.semanticChildCount,
required this.dragStartBehavior,
required this.keyboardDismissBehavior,
required this.restorationId,
required this.clipBehavior,
required this.padding,
required this.itemExtent,
required this.childObjects,
this.mergeStrategy = ArrayMergeStrategy.addToEnd,
this.scrollEndReachedThreshold = 150,
}) : separator = null,
type = 1;
ListViewAttributes.separated({
required this.scrollDirection,
required this.reverse,
required this.shrinkWrap,
required this.addSemanticIndexes,
required this.addRepaintBoundaries,
required this.addAutomaticKeepAlives,
required this.primary,
required this.physics,
required this.anchor,
required this.cacheExtent,
required this.semanticChildCount,
required this.dragStartBehavior,
required this.keyboardDismissBehavior,
required this.restorationId,
required this.clipBehavior,
required this.padding,
required this.itemExtent,
required this.separator,
required this.childObjects,
this.mergeStrategy = ArrayMergeStrategy.addToEnd,
this.scrollEndReachedThreshold = 150,
}) : type = 2;
Пример использования
- Go
ListView[duit_core.RemoteAction, duit_edge_insets.EdgeInsetsAll](
&duit_attributes.ListViewBuilderAttributes[duit_edge_insets.EdgeInsetsAll]{
ListView: duit_attributes.ListView[duit_edge_insets.EdgeInsetsAll]{
},
Builder: duit_builder.Builder{
ChildObjects: []*duit_core.DuitElementModel{}, //initial data
},
},
"id",
true,
&duit_core.RemoteAction{
Event: "/get_items",
DependsOn: []*duit_core.ActionDependency{},
},
nil, //children
)