رونمایی از پخته‌ترین و کاربردی‌ترین محصولات آموزشی سون‌لرن با کلی آفرهای ویژه🔥
۰ ثانیه
۰ دقیقه
۰ ساعت
۴ پریسا مسلمی
slider عوض نمشود
امیررضا بشیری حل شده توسط امیررضا بشیری

سلام من مطابق فیلم رفتم ولی slider‌ها عوض نمی‌شوندscrrol-9uDn.png

مجدد دوباره این قسمت scroll نمیشه و همون مشکل داره ممنون میشم کمک کنیدparisa-moslime-QUX0.png

پریسا مسلمی ۱۵ مهر ۱۴۰۲، ۰۸:۱۷

سلام و درود

 لطفا یک ویدیو از مشکل خودتون به همراه سورس کامل جهت بررسی ارسال کنید.

امیررضا بشیری ۱۶ مهر ۱۴۰۲، ۱۰:۰۴
import 'package:cached_network_image/cached_network_image.dart';
import 'package:f6_nike/common/utils.dart';
import 'package:f6_nike/data/banner.dart';
import 'package:f6_nike/data/repo/banner_repository.dart';
import 'package:f6_nike/data/repo/product_repository.dart';
import 'package:f6_nike/product.dart';
import 'package:f6_nike/ui/home/bloc/home_bloc.dart';
import 'package:f6_nike/ui/widgets/image.dart';
import 'package:f6_nike/ui/widgets/slider.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
class HomeScreen extends StatelessWidget {
  const HomeScreen({super.key});
  @override
  Widget build(BuildContext context) {
    return BlocProvider(
      create: (context) {
        final homeBloc = HomeBloc(
            bannerRepository: bannerRepository,
            productRepository: productRepository);
        homeBloc.add(HomeStarted());
        return homeBloc;
      },
      child: Scaffold(
        body: SafeArea(
          child: BlocBuilder<HomeBloc, HomeState>(builder: ((context, state) {
            if (state is HomeSuccess) {
              return ListView.builder(
                  itemCount: 5,
                  itemBuilder: (context, index) {
                    switch (index) {
                      case 0:
                        return Container(
                          height: 56,
                          alignment: Alignment.center,
                          child: Image.asset(
                            'assets/img/nike_logo.png',
                            fit: BoxFit.fitHeight,
                            height: 24,
                          ),
                        );
                      case 2:
                        return BannerSlider(
                          banners: state.banners,
                        );
                      case 3:
                        return _HorizontalProductList(
                          title: 'جدید ترین',
                          onTap: () {},
                          products: state.latestProduct,
                        );
                      case 4:
                        return _HorizontalProductList(
                          title: 'جدید ترین',
                          onTap: () {},
                          products: state.popularProduct,
                        );
                      default:
                        return Container();
                    }
                  });
            } else if (state is HomeLoading) {
              return const Center(child: CircularProgressIndicator());
            } else if (state is HomeError) {
              return Center(
                child: Column(
                  mainAxisAlignment: MainAxisAlignment.center,
                  crossAxisAlignment: CrossAxisAlignment.center,
                  children: [
                    Text(state.exception.message),
                    ElevatedButton(
                        onPressed: () {
                          BlocProvider.of<HomeBloc>(context).add(HomeRefresh());
                        },
                        child: const Text('تلاش دوباره'))
                  ],
                ),
              );
            } else {
              throw Exception('satae is not supported');
            }
          })),
        ),
      ),
    );
  }
}
class _HorizontalProductList extends StatelessWidget {
  final String title;
  final GestureTapCallback onTap;
  final List<ProductEntity> products;
  const _HorizontalProductList({
    super.key,
    required this.title,
    required this.onTap,
    required this.products,
  });
  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Padding(
          padding: const EdgeInsets.only(left: 12, right: 12),
          child: Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: [
              Text(
                title,
                style: Theme.of(context).textTheme.titleMedium,
              ),
              TextButton(onPressed: onTap, child: const Text('مشاهده همه'))
            ],
          ),
        ),
        SizedBox(
          height: 322,
          child: ListView.builder(
              itemCount: products.length,
              scrollDirection: Axis.horizontal,
              padding: const EdgeInsets.only(left: 8, right: 8),
              itemBuilder: ((context, index) {
                final product = products[index];
                return Padding(
                    padding: const EdgeInsets.all(4.0),
                    child: SizedBox(
                      width: 196,
                      child: Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: [
                          Stack(
                            children: [
                              SizedBox(
                                width: 176,
                                height: 189,
                                child: ImageLodingService(
                                  imageUrl: product.imageUrl,
                                  borderRadius: BorderRadius.circular(12),
                                ),
                              ),
                              Positioned(
                                right: 8,
                                top: 8,
                                child: Container(
                                  width: 32,
                                  height: 32,
                                  alignment: Alignment.center,
                                  decoration: const BoxDecoration(
                                    shape: BoxShape.circle,
                                    color: Colors.white,
                                  ),
                                  child: const Icon(
                                    CupertinoIcons.heart,
                                    size: 20,
                                  ),
                                ),
                              )
                            ],
                          ),
                          Padding(
                            padding: const EdgeInsets.all(8.0),
                            child: Text(
                              product.title,
                              maxLines: 1,
                              overflow: TextOverflow.ellipsis,
                            ),
                          ),
                          Padding(
                            padding: const EdgeInsets.only(right: 8, left: 8),
                            child: Text(
                              product.previousPrice.withPriceLable,
                              style: Theme.of(context)
                                  .textTheme
                                  .bodySmall!
                                  .copyWith(
                                      decoration: TextDecoration.lineThrough),
                            ),
                          ),
                          Padding(
                            padding: const EdgeInsets.only(
                                right: 8, left: 8, top: 8),
                            child: Text(product.price.withPriceLable),
                          )
                        ],
                      ),
                    ));
              })),
        )
      ],
    );
  }
}
پریسا مسلمی ۱۶ مهر ۱۴۰۲، ۱۳:۱۵

سلام مجدد

خانم مسلمی در تصویر قبلی که ارسال کردین مشکلی دیده نمیشه اما شما اظهار دارین در اسکرول کردن مشکل دارین لطفا یک ویدیو از مشکلی که دارین تهیه کنید تا بتونم برای رفع اون کمک تون کنم.

بهترین پاسخ
امیررضا بشیری ۱۷ مهر ۱۴۰۲، ۱۳:۵۳