buildContentSliver method
Builds the main content sliver.
Implementation
Widget buildContentSliver(BuildContext context) {
if (error != null) {
return SliverToBoxAdapter(
child: Container(
key: const ValueKey('list_error_message'),
child: errorStateBuilder?.call(context, error!) ??
TListTheme.buildErrorState(context.colors, title: error!.title, message: error!.message),
),
);
}
if (!loading && error == null && items.isEmpty) {
return SliverToBoxAdapter(
child: Container(
key: const ValueKey('list_empty_message'),
child: emptyStateBuilder?.call(context) ?? TListTheme.buildEmptyState(context.colors),
),
);
}
if (reorderable) {
return SliverReorderableList(
itemBuilder: buildItem,
itemCount: items.length,
onReorder: (int oldIndex, int newIndex) {
if (newIndex > oldIndex) {
newIndex -= 1;
}
if (oldIndex >= 0 && oldIndex < items.length && newIndex >= 0 && newIndex < items.length) {
onReorder?.call(oldIndex, newIndex);
}
},
proxyDecorator: dragProxyDecorator,
);
} else if (grid != null) {
final config = gridDelegate!(context);
if (grid == TGridMode.masonry) {
return SliverMasonryGrid(
delegate: SliverChildBuilderDelegate(buildItem, childCount: items.length),
gridDelegate: config.simpleGridDelegate,
mainAxisSpacing: config.mainAxisSpacing,
crossAxisSpacing: config.crossAxisSpacing,
);
} else if (grid == TGridMode.aligned) {
return SliverAlignedGrid(
itemBuilder: buildItem,
itemCount: items.length,
gridDelegate: config.simpleGridDelegate,
mainAxisSpacing: config.mainAxisSpacing,
crossAxisSpacing: config.crossAxisSpacing,
);
}
} else if (listSeparatorBuilder != null) {
return SliverList.separated(
itemCount: items.length,
itemBuilder: buildItem,
separatorBuilder: listSeparatorBuilder!,
);
} else {
return SliverList.builder(
itemCount: items.length,
itemBuilder: buildItem,
);
}
throw UnimplementedError();
}