'Using carousel slider with page view

I am using carousal slider with page view but when I am sliding the images in scroll view it is sliding to me to next page instead of next image. I just want to slide images when I slide on image and i want to slide to the next page when i slide below the image. but now wherever i slide on the screen it take me to the next page.

This is my page view.

import 'package:bartermade/controllers/profileController.dart';
import 'package:bartermade/models/tradeModel.dart';
import 'package:bartermade/widgets/profileView.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';

import '../screens/home/bottomBarViews/homeView/categoriesDetailScreen.dart';

class PageViewHolder extends StatelessWidget {

  final PageController pageController = PageController(
    initialPage: 0,
  );

  ProfileController _profileController = Get.find();

  final String reciverId;
  final String currentUserId;
  final TradeModel catData;


  PageViewHolder(
      {required this.reciverId,
      required this.currentUserId,
      required this.catData});
  var followersList = ['Ali', 'Hussain', 'Hassan', 'Akhtar'];

  @override
  Widget build(BuildContext context) {
    // print("cat ID " + "${catData.user.id}");
    // print("profile ID " + "${_profileController.profileId}");
    return Scaffold(
      body: PageView(
        // physics: catData.user.id != _profileController.profileId.value
        //     ? AlwaysScrollableScrollPhysics()
        //     : NeverScrollableScrollPhysics(),
        physics: ClampingScrollPhysics(),
          pageSnapping: false,

        onPageChanged: (index) {
             
        },
        controller: pageController,
        children: [
          //first screen in page view
          TradeDetailScreen(
            catData: catData,
            currentUserId: currentUserId,
            reciverId: reciverId,
          ),

          //second screen here
          ProfileView(
          
            firstName: catData.user.firstName,
            lastName: catData.user.lastName,
            followers: followersList,
            profileUrl: catData.user.profilePictureUrl,
            screenState: true,
          ),
        ],
      ),
    );
  }
}
  

And this is my screen page

@override
  Widget build(BuildContext context) {
    return Scaffold(
      body: LayoutBuilder(
        builder: (context, constraints) {
          return OrientationBuilder(
            builder: (context, orientation) => SafeArea(
              child: SingleChildScrollView(
                child: Column(children: [
                  Padding(
                    padding: const EdgeInsets.all(8.0),
                    child: Row(
                      crossAxisAlignment: CrossAxisAlignment.center,
                      children: [
                        IconButton(
                            onPressed: () {
                              Get.back();
                            },
                            icon: Icon(
                              Icons.arrow_back_ios,
                              color: Colors.grey,
                            )),
                        Container(
                          clipBehavior: Clip.antiAlias,
                          height: 50,
                          width: 50,
                          decoration: BoxDecoration(
                            shape: BoxShape.circle,
                          ),
                          child: CachedNetworkImage(
                            fit: BoxFit.cover,
                            imageUrl: '${widget.profileUrl}',
                            placeholder: (context, url) =>
                                Center(child: CircularProgressIndicator()),
                            errorWidget: (context, url, error) =>
                                Icon(Icons.error),
                          ),
                        ),
                        SizedBox(
                          width: 7,
                        ),
                        Flexible(
                          child: Column(
                            crossAxisAlignment: CrossAxisAlignment.start,
                            mainAxisAlignment: MainAxisAlignment.center,
                            children: [
                              Row(
                                mainAxisAlignment:
                                    MainAxisAlignment.spaceBetween,
                                children: [
                                  Text(
                                    "${widget.lastName ?? " " "${widget.firstName ?? "  "}"}",
                                    maxLines: 2,
                                    overflow: TextOverflow.ellipsis,
                                    style: TextStyle(
                                        fontWeight: FontWeight.bold,
                                        fontSize: (MediaQuery.of(context)
                                                    .size
                                                    .height /
                                                100) *
                                            2),
                                  ),
                                  widget.catData["user"] ==
                                          profileController.userId.value
                                      ? Container(
                                          height: 0,
                                          width: 0,
                                        )
                                      : Container(
                                          padding: EdgeInsets.all(5),
                                          child: Center(
                                            child: Text(
                                              'Follow',
                                              style: TextStyle(
                                                  color: Colors.white,
                                                  fontSize: 12),
                                            ),
                                          ),
                                          //width: 50,
                                          decoration: BoxDecoration(
                                              color: AppColors.pinkAppBar,
                                              borderRadius: BorderRadius.all(
                                                  Radius.circular(20)))),
                                ],
                              ),
                              Row(
                                //crossAxisAlignment: CrossAxisAlignment.start,
                                children: [
                                  Text(
                                    '4.3',
                                    style: TextStyle(
                                        color: Colors.grey,
                                        fontWeight: FontWeight.bold,
                                        fontSize: (MediaQuery.of(context)
                                                    .size
                                                    .height /
                                                100) *
                                            1.8),
                                  ),
                                  Icon(
                                    Icons.star,
                                    size: 15,
                                    color: Colors.yellow,
                                  ),
                                ],
                              ),
                            ],
                          ),
                        )
                      ],
                    ),
                  ),
                  Column(
                    children: [
                      widget.catData["pictures"] == [] ||
                              widget.catData["pictures"].length == 0 ||
                              widget.catData["pictures"].isEmpty ||
                              widget.catData["pictures"] == null
                          ? Container(
                              width: MediaQuery.of(context).size.width,
                              height: MediaQuery.of(context).size.height * 0.6,
                              child: Center(child: Text(" No Image to show")))
                          : Stack(
                              children: [
                                CarouselSlider(
                                  items: widget.catData["tradeWithPictures"]
                                      .map<Widget>((e) {
                                    return Container(
                                      width: Get.width,
                                      child: CachedNetworkImage(
                                        fit: BoxFit.cover,
                                        imageUrl: e['url'],
                                        placeholder: (context, url) => Center(
                                            child: CircularProgressIndicator()),
                                        errorWidget: (context, url, error) =>
                                            Icon(Icons.error),
                                      ),
                                    );
                                  }).toList(),
                                  carouselController:
                                      postController.carouselController,
                                  options: CarouselOptions(

                                    autoPlay: true,
                                    enableInfiniteScroll: true,



                                    height: Get.height * .7,
                                    viewportFraction: 1.0,
                                    enlargeCenterPage: false,
                                    aspectRatio: 1 / 1.3,
                                    onPageChanged: (index, reason) {
                                     // postController.tradeImagesIndex(index);
                                     // postController.carouselController.nextPage();
                                    },
                                  ),
                                ),
                                Positioned(
                                  top: MediaQuery.of(context).size.height * 0.3,
                                  bottom:
                                      MediaQuery.of(context).size.height * 0.3,
                                  left: 0,
                                  right: 0,
                                  child: Container(
                                    padding:
                                        EdgeInsets.symmetric(horizontal: 10),
                                    width: MediaQuery.of(context).size.width,
                                    child: Row(
                                      mainAxisAlignment:
                                          MainAxisAlignment.spaceBetween,
                                      children: [
                                        ElevatedButton(
                                          child: Icon(Icons.arrow_back_ios),
                                          style: ButtonStyle(
                                            splashFactory:
                                                NoSplash.splashFactory,
                                            shape: MaterialStateProperty.all<
                                                RoundedRectangleBorder>(
                                              RoundedRectangleBorder(
                                                borderRadius:
                                                    BorderRadius.circular(25.0),
                                                side: BorderSide(
                                                    color: AppColors.pinkColor),
                                              ),
                                            ),
                                          ),
                                          onPressed: () {
                                            postController.carouselController
                                                .previousPage();
                                          },
                                        ),
                                        ElevatedButton(
                                          child: Icon(Icons.arrow_forward_ios),
                                          style: ButtonStyle(
                                            splashFactory:
                                                NoSplash.splashFactory,
                                            shape: MaterialStateProperty.all<
                                                RoundedRectangleBorder>(
                                              RoundedRectangleBorder(
                                                borderRadius:
                                                    BorderRadius.circular(25.0),
                                                side: BorderSide(
                                                    color: AppColors.pinkColor),
                                              ),
                                            ),
                                          ),
                                          onPressed: () {
                                            postController.carouselController
                                                .nextPage();
                                          },
                                        ),
                                      ],
                                    ),
                                  ),
                                ),
                              ],
                            ),
                      SizedBox(
                        height: 10,
                      ),

                    ],
                  ),
                  Container(
                    margin: EdgeInsets.all(10),
                    child: Column(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: [
                        Row(
                          mainAxisAlignment: MainAxisAlignment.spaceBetween,
                          children: [
                            Text(
                              widget.catData["title"],
                              style: TextStyle(
                                  color: AppColors.detailTextsColor,
                                  fontWeight: FontWeight.bold),
                            ),
                            profileController.userId == widget.catData["user"]
                                ? Container(
                                    height: 0,
                                    width: 0,
                                  )
                                : InkWell(
                                    onTap: () {

                                    },
                                    child: Container(
                                      padding: EdgeInsets.all(5),
                                      child: Center(
                                        child: Text(
                                          'Offer Trade',
                                          style: TextStyle(
                                              color: Colors.white,
                                              fontSize: 12),
                                        ),
                                      ),
                                      //width: 50,
                                      decoration: BoxDecoration(
                                        color: AppColors.pinkAppBar,
                                        borderRadius: BorderRadius.all(
                                          Radius.circular(20),
                                        ),
                                      ),
                                    ),
                                  ),
                          ],


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source