Перейти к основному содержимому

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;

Пример использования​

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
)