dyn topic fold

Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-07-06 12:22:27 +08:00
parent 5e1c73abc1
commit aa03eed92d
13 changed files with 184 additions and 97 deletions

View File

@@ -76,36 +76,13 @@ class _DynamicsTabPageState extends State<DynamicsTabPage>
? SliverWaterfallFlow(
gridDelegate: dynGridDelegate,
delegate: SliverChildBuilderDelegate(
(_, index) {
if (index == response.length - 1) {
controller.onLoadMore();
}
final item = response[index];
return DynamicPanel(
item: item,
onRemove: (idStr) =>
controller.onRemove(index, idStr),
onBlock: () => controller.onBlock(index),
onUnfold: () => controller.onUnfold(item, index),
);
},
(_, index) => _itemBuilder(response, index),
childCount: response.length,
),
)
: SliverList.builder(
itemBuilder: (context, index) {
if (index == response.length - 1) {
controller.onLoadMore();
}
final item = response[index];
return DynamicPanel(
item: item,
onRemove: (idStr) =>
controller.onRemove(index, idStr),
onBlock: () => controller.onBlock(index),
onUnfold: () => controller.onUnfold(item, index),
);
},
itemBuilder: (context, index) =>
_itemBuilder(response, index),
itemCount: response.length,
)
: HttpError(onReload: controller.onReload),
@@ -115,4 +92,17 @@ class _DynamicsTabPageState extends State<DynamicsTabPage>
),
};
}
Widget _itemBuilder(List<DynamicItemModel> list, int index) {
if (index == list.length - 1) {
controller.onLoadMore();
}
final item = list[index];
return DynamicPanel(
item: item,
onRemove: (idStr) => controller.onRemove(index, idStr),
onBlock: () => controller.onBlock(index),
onUnfold: () => controller.onUnfold(item, index),
);
}
}