fix category tabbar

This commit is contained in:
efrilm 2025-10-08 13:01:26 +07:00
parent 613b216c04
commit 1fbacae1f4
4 changed files with 34 additions and 3 deletions

View File

@ -60,13 +60,13 @@ class CategoryLoaderBloc
},
(response) async {
final categories = response.data.categories;
categories.insert(0, CategoryModel.all());
final totalPages = response.data.totalPages;
final hasReachedMax = categories.length < 10 || 1 >= totalPages;
log('✅ Categories loaded: ${categories.length}, hasReachedMax: $hasReachedMax');
categories.insert(0, CategoryModel.all());
emit(CategoryLoaderState.loaded(
categories: categories,
hasReachedMax: hasReachedMax,

View File

@ -228,6 +228,7 @@ class _HomePageState extends State<HomePage> {
child: BlocBuilder<ProductLoaderBloc, ProductLoaderState>(
builder: (context, productState) {
return CategoryTabBar(
key: ValueKey(categories.length),
categories: categories,
tabViews: categories.map((category) {
return SizedBox(

View File

@ -41,6 +41,36 @@ class _CategoryTabBarState extends State<CategoryTabBar>
});
}
@override
void didUpdateWidget(CategoryTabBar oldWidget) {
super.didUpdateWidget(oldWidget);
// Update TabController when categories length changes
if (oldWidget.categories.length != widget.categories.length) {
_tabController.dispose();
_tabController = TabController(
length: widget.categories.length,
vsync: this,
initialIndex: 0, // Reset to first tab
);
_tabController.addListener(() {
if (_tabController.indexIsChanging) {
if (_tabController.index == 0) {
context.read<ProductLoaderBloc>().add(
ProductLoaderEvent.getProduct(),
);
} else {
selectedCategoryId = widget.categories[_tabController.index].id;
context.read<ProductLoaderBloc>().add(
ProductLoaderEvent.getProduct(categoryId: selectedCategoryId),
);
}
}
});
}
}
@override
void dispose() {
_tabController.dispose();

View File

@ -16,7 +16,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
version: 1.0.2+4
version: 1.0.2+5
environment:
sdk: ">=3.2.4 <4.0.0"