1

I have cards which are getting scrolled successfully through a Page Controller and animate to Page. Now my issue is that even though it is iterated correctly, if I scroll myself to the right or left it leaves me back at the starting position aka _currentPage=0. I want the system to know dynamically that if 0 is the starting position and I have scrolled manually to the 3rd position, I want it to go to the 4th position and not start at the 0th position again. Similarly, if I have scrolled backwards to the 6th position I want it to go forward from where I scrolled not back to 0. Is there a way to achieve this dynamically?

Please refer to the Timer.periodic code I tried adding a gesture Detector but that wouldn't work the program would not scroll at all.

 Timer _mytimer;
  bool _mytimerz = false;
  int _timerspeed = 15;
  int _currentPage = 0;
  bool _speedtime = false;
  PageController _pageController = PageController(
    initialPage: 0,
  );

  // timerforthisThis() {

  void initState() {
    super.initState();
    tests = [
      widget.label00,
      widget.label0,
      widget.label1,
      widget.label2,
      widget.label3,
      widget.label4,
      widget.label5,
      widget.label6,
      widget.label7,
      widget.label8,
      widget.label9,
      widget.label10,
      widget.label11,
      widget.label12,
      widget.label13,
      widget.label14,
      widget.label15,
      widget.label16,
      widget.label17,
      widget.label18,
      widget.label19,
      widget.label20,
      widget.label21,
      widget.label22,
      widget.label23,
      widget.label24,
      widget.label25,
      widget.label26,
      widget.label27,
      widget.label28,
      widget.label29,
      widget.label30,
      widget.label31,
      widget.label32,
      widget.label33,
      widget.label34,
      widget.label35,
      widget.label36,
      widget.label37,
    ];

    results = [];

    for (int i = 0; i < tests.length; i++) {
      if (widget.label00 != '') {
        results.add(widget.label00);
      }
      if (widget.label0 != '') {
        results.add(widget.label0);
      }
      if (widget.label1 != '') {
        results.add(widget.label1);
      }
      if (widget.label2 != '') {
        results.add(widget.label2);
      }
      if (widget.label3 != '') {
        results.add(widget.label3);
      }
      if (widget.label4 != '') {
        results.add(widget.label4);
      }
      if (widget.label5 != '') {
        results.add(widget.label5);
      }
      if (widget.label6 != '') {
        results.add(widget.label6);
      }
      if (widget.label7 != '') {
        results.add(widget.label7);
      }
      if (widget.label8 != '') {
        results.add(widget.label8);
      }
      if (widget.label9 != '') {
        results.add(widget.label9);
      }
      if (widget.label10 != '') {
        results.add(widget.label10);
      }
      if (widget.label11 != '') {
        results.add(widget.label11);
      }
      if (widget.label12 != '') {
        results.add(widget.label12);
      }
      if (widget.label13 != '') {
        results.add(widget.label13);
      }
      if (widget.label14 != '') {
        results.add(widget.label14);
      }
      if (widget.label15 != '') {
        results.add(widget.label15);
      }
      if (widget.label16 != '') {
        results.add(widget.label16);
      }
      if (widget.label17 != '') {
        results.add(widget.label17);
      }
      if (widget.label18 != '') {
        results.add(widget.label18);
      }
      if (widget.label19 != '') {
        results.add(widget.label19);
      }
      if (widget.label20 != '') {
        results.add(widget.label20);
      }
      if (widget.label21 != '') {
        results.add(widget.label21);
      }
      if (widget.label22 != '') {
        results.add(widget.label22);
      }
      if (widget.label23 != '') {
        results.add(widget.label23);
      }
      if (widget.label24 != '') {
        results.add(widget.label24);
      }
      if (widget.label25 != '') {
        results.add(widget.label25);
      }

      if (widget.label26 != '') {
        results.add(widget.label26);
      }
      if (widget.label27 != '') {
        results.add(widget.label27);
      }
      if (widget.label28 != '') {
        results.add(widget.label28);
      }
      if (widget.label29 != '') {
        results.add(widget.label29);
      }
      if (widget.label30 != '') {
        results.add(widget.label30);
      }
      if (widget.label31 != '') {
        results.add(widget.label31);
      }
      if (widget.label32 != '') {
        results.add(widget.label32);
      }
      if (widget.label33 != '') {
        results.add(widget.label33);
      }
      if (widget.label34 != '') {
        results.add(widget.label34);
      }
      if (widget.label35 != '') {
        results.add(widget.label35);
      }
      if (widget.label36 != '') {
        results.add(widget.label36);
      }
      if (widget.label37 != '') {
        results.add(widget.label37);
      }
    }

    Timer.periodic(Duration(seconds: 5), (Timer timer) {
      // if (_mytimerz = true) {
      //   timer.cancel();
      // }

      // if (_speedtime = false) {
      //   Timer.periodic(Duration(seconds: 2), (timer) {});

      if (_currentPage < results.length) {
        _currentPage++;
        // _currentPage++;
      }
      // _speedtime = true;
      // timer.cancel();

      // } else {
      // GestureDetector(onPanUpdate: (details) {
      //   if (details.delta.dx > 0 || details.delta.dx < 0) {
      //     print("right");
      //   }
      // });
      //   _currentPage = _currentPage;
      //   // 0
      // }

      _pageController
          .
          // animateTo(
          // _pageController.,

          // duration: , curve: curve)
          animateToPage(
        // results.length,
        _currentPage = _currentPage,
        duration:
            //  _speedtime
            // ?
            // Duration(milliseconds: 0),
            // :
            Duration(milliseconds: 350),
        curve: Curves.easeIn,
      );
    }
        // );

        // );
        // }
        );
  }
shahbaz
  • 145
  • 2
  • 16

1 Answers1

0
  • First, have a variable to feed the page view index like pageViewIndex
  • Initialise the PageController in the initState method with the pageViewIndex
  • Then in the PageView's onPageChanged method do setState for the pageViewIndex and animate the PageController to the (new) pageViewIndex

Hope that should do. Comment down if any other help is needed.