Flutter drag down to pop ModalRoute page












2















Hei i have app like this



enter image description here



my question is how can this modal route draggable down to pop route?
this popup page i create from this sample https://stackoverflow.com/a/51908876/10068765



i tried with backdrop on flutter example but its not work, can anyone help with a sample gesturedetector to pop this modal route ?
thanks.










share|improve this question



























    2















    Hei i have app like this



    enter image description here



    my question is how can this modal route draggable down to pop route?
    this popup page i create from this sample https://stackoverflow.com/a/51908876/10068765



    i tried with backdrop on flutter example but its not work, can anyone help with a sample gesturedetector to pop this modal route ?
    thanks.










    share|improve this question

























      2












      2








      2








      Hei i have app like this



      enter image description here



      my question is how can this modal route draggable down to pop route?
      this popup page i create from this sample https://stackoverflow.com/a/51908876/10068765



      i tried with backdrop on flutter example but its not work, can anyone help with a sample gesturedetector to pop this modal route ?
      thanks.










      share|improve this question














      Hei i have app like this



      enter image description here



      my question is how can this modal route draggable down to pop route?
      this popup page i create from this sample https://stackoverflow.com/a/51908876/10068765



      i tried with backdrop on flutter example but its not work, can anyone help with a sample gesturedetector to pop this modal route ?
      thanks.







      dart flutter flutter-layout






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 22 '18 at 4:49









      RIFALRIFAL

      7411




      7411
























          2 Answers
          2






          active

          oldest

          votes


















          0














          I think, there other solution also for same,



          You can use showModelBottomSheet as below



          showModalBottomSheet(
          context: context,
          builder: (BuildContext bc) {
          return Container();
          });


          Design Container base on your requirement may you got a solution.






          share|improve this answer































            0














            This uses onVerticalDragStart and onVerticalDragUpdate to determine if a pointer moves positionDelta amount in timeDelta time. To trigger it you just have to swipe down fast enough.



            int initialDragTimeStamp;
            int currentDragTimeStamp;
            int timeDelta;
            double initialPositionY;
            double currentPositionY;
            double positionYDelta;

            void _startVerticalDrag(details) {
            // Timestamp of when drag begins
            initialDragTimeStamp = details.sourceTimeStamp.inMilliseconds;

            // Screen position of pointer when drag begins
            initialPositionY = details.globalPosition.dy;
            }

            void _whileVerticalDrag(details) {
            // Gets current timestamp and position of the drag event
            currentDragTimeStamp = details.sourceTimeStamp.inMilliseconds;
            currentPositionY = details.globalPosition.dy;

            // How much time has passed since drag began
            timeDelta = currentDragTimeStamp - initialDragTimeStamp;

            // Distance pointer has travelled since drag began
            positionYDelta = currentPositionY - initialPositionY;

            // If pointer has moved more than 50pt in less than 50ms...
            if (timeDelta < 50 && positionYDelta > 50) {
            // close modal
            }
            }


            And on your GestureDetector:



            GestureDetector(
            onVerticalDragStart: (details) => _startVerticalDrag(details),
            onVerticalDragUpdate: (details) => _whileVerticalDrag(details)
            )


            details refers to DragUpdateDetails and passes event information



            Keep in mind if the modal includes a ListView or anything else that would block scroll gestures, you'll want to include something like this to keep receiving them.






            share|improve this answer

























              Your Answer






              StackExchange.ifUsing("editor", function () {
              StackExchange.using("externalEditor", function () {
              StackExchange.using("snippets", function () {
              StackExchange.snippets.init();
              });
              });
              }, "code-snippets");

              StackExchange.ready(function() {
              var channelOptions = {
              tags: "".split(" "),
              id: "1"
              };
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function() {
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled) {
              StackExchange.using("snippets", function() {
              createEditor();
              });
              }
              else {
              createEditor();
              }
              });

              function createEditor() {
              StackExchange.prepareEditor({
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: true,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: 10,
              bindNavPrevention: true,
              postfix: "",
              imageUploader: {
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              },
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              });


              }
              });














              draft saved

              draft discarded


















              StackExchange.ready(
              function () {
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53424071%2fflutter-drag-down-to-pop-modalroute-page%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              0














              I think, there other solution also for same,



              You can use showModelBottomSheet as below



              showModalBottomSheet(
              context: context,
              builder: (BuildContext bc) {
              return Container();
              });


              Design Container base on your requirement may you got a solution.






              share|improve this answer




























                0














                I think, there other solution also for same,



                You can use showModelBottomSheet as below



                showModalBottomSheet(
                context: context,
                builder: (BuildContext bc) {
                return Container();
                });


                Design Container base on your requirement may you got a solution.






                share|improve this answer


























                  0












                  0








                  0







                  I think, there other solution also for same,



                  You can use showModelBottomSheet as below



                  showModalBottomSheet(
                  context: context,
                  builder: (BuildContext bc) {
                  return Container();
                  });


                  Design Container base on your requirement may you got a solution.






                  share|improve this answer













                  I think, there other solution also for same,



                  You can use showModelBottomSheet as below



                  showModalBottomSheet(
                  context: context,
                  builder: (BuildContext bc) {
                  return Container();
                  });


                  Design Container base on your requirement may you got a solution.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Jan 18 at 10:49









                  TejaDroidTejaDroid

                  3,76421828




                  3,76421828

























                      0














                      This uses onVerticalDragStart and onVerticalDragUpdate to determine if a pointer moves positionDelta amount in timeDelta time. To trigger it you just have to swipe down fast enough.



                      int initialDragTimeStamp;
                      int currentDragTimeStamp;
                      int timeDelta;
                      double initialPositionY;
                      double currentPositionY;
                      double positionYDelta;

                      void _startVerticalDrag(details) {
                      // Timestamp of when drag begins
                      initialDragTimeStamp = details.sourceTimeStamp.inMilliseconds;

                      // Screen position of pointer when drag begins
                      initialPositionY = details.globalPosition.dy;
                      }

                      void _whileVerticalDrag(details) {
                      // Gets current timestamp and position of the drag event
                      currentDragTimeStamp = details.sourceTimeStamp.inMilliseconds;
                      currentPositionY = details.globalPosition.dy;

                      // How much time has passed since drag began
                      timeDelta = currentDragTimeStamp - initialDragTimeStamp;

                      // Distance pointer has travelled since drag began
                      positionYDelta = currentPositionY - initialPositionY;

                      // If pointer has moved more than 50pt in less than 50ms...
                      if (timeDelta < 50 && positionYDelta > 50) {
                      // close modal
                      }
                      }


                      And on your GestureDetector:



                      GestureDetector(
                      onVerticalDragStart: (details) => _startVerticalDrag(details),
                      onVerticalDragUpdate: (details) => _whileVerticalDrag(details)
                      )


                      details refers to DragUpdateDetails and passes event information



                      Keep in mind if the modal includes a ListView or anything else that would block scroll gestures, you'll want to include something like this to keep receiving them.






                      share|improve this answer






























                        0














                        This uses onVerticalDragStart and onVerticalDragUpdate to determine if a pointer moves positionDelta amount in timeDelta time. To trigger it you just have to swipe down fast enough.



                        int initialDragTimeStamp;
                        int currentDragTimeStamp;
                        int timeDelta;
                        double initialPositionY;
                        double currentPositionY;
                        double positionYDelta;

                        void _startVerticalDrag(details) {
                        // Timestamp of when drag begins
                        initialDragTimeStamp = details.sourceTimeStamp.inMilliseconds;

                        // Screen position of pointer when drag begins
                        initialPositionY = details.globalPosition.dy;
                        }

                        void _whileVerticalDrag(details) {
                        // Gets current timestamp and position of the drag event
                        currentDragTimeStamp = details.sourceTimeStamp.inMilliseconds;
                        currentPositionY = details.globalPosition.dy;

                        // How much time has passed since drag began
                        timeDelta = currentDragTimeStamp - initialDragTimeStamp;

                        // Distance pointer has travelled since drag began
                        positionYDelta = currentPositionY - initialPositionY;

                        // If pointer has moved more than 50pt in less than 50ms...
                        if (timeDelta < 50 && positionYDelta > 50) {
                        // close modal
                        }
                        }


                        And on your GestureDetector:



                        GestureDetector(
                        onVerticalDragStart: (details) => _startVerticalDrag(details),
                        onVerticalDragUpdate: (details) => _whileVerticalDrag(details)
                        )


                        details refers to DragUpdateDetails and passes event information



                        Keep in mind if the modal includes a ListView or anything else that would block scroll gestures, you'll want to include something like this to keep receiving them.






                        share|improve this answer




























                          0












                          0








                          0







                          This uses onVerticalDragStart and onVerticalDragUpdate to determine if a pointer moves positionDelta amount in timeDelta time. To trigger it you just have to swipe down fast enough.



                          int initialDragTimeStamp;
                          int currentDragTimeStamp;
                          int timeDelta;
                          double initialPositionY;
                          double currentPositionY;
                          double positionYDelta;

                          void _startVerticalDrag(details) {
                          // Timestamp of when drag begins
                          initialDragTimeStamp = details.sourceTimeStamp.inMilliseconds;

                          // Screen position of pointer when drag begins
                          initialPositionY = details.globalPosition.dy;
                          }

                          void _whileVerticalDrag(details) {
                          // Gets current timestamp and position of the drag event
                          currentDragTimeStamp = details.sourceTimeStamp.inMilliseconds;
                          currentPositionY = details.globalPosition.dy;

                          // How much time has passed since drag began
                          timeDelta = currentDragTimeStamp - initialDragTimeStamp;

                          // Distance pointer has travelled since drag began
                          positionYDelta = currentPositionY - initialPositionY;

                          // If pointer has moved more than 50pt in less than 50ms...
                          if (timeDelta < 50 && positionYDelta > 50) {
                          // close modal
                          }
                          }


                          And on your GestureDetector:



                          GestureDetector(
                          onVerticalDragStart: (details) => _startVerticalDrag(details),
                          onVerticalDragUpdate: (details) => _whileVerticalDrag(details)
                          )


                          details refers to DragUpdateDetails and passes event information



                          Keep in mind if the modal includes a ListView or anything else that would block scroll gestures, you'll want to include something like this to keep receiving them.






                          share|improve this answer















                          This uses onVerticalDragStart and onVerticalDragUpdate to determine if a pointer moves positionDelta amount in timeDelta time. To trigger it you just have to swipe down fast enough.



                          int initialDragTimeStamp;
                          int currentDragTimeStamp;
                          int timeDelta;
                          double initialPositionY;
                          double currentPositionY;
                          double positionYDelta;

                          void _startVerticalDrag(details) {
                          // Timestamp of when drag begins
                          initialDragTimeStamp = details.sourceTimeStamp.inMilliseconds;

                          // Screen position of pointer when drag begins
                          initialPositionY = details.globalPosition.dy;
                          }

                          void _whileVerticalDrag(details) {
                          // Gets current timestamp and position of the drag event
                          currentDragTimeStamp = details.sourceTimeStamp.inMilliseconds;
                          currentPositionY = details.globalPosition.dy;

                          // How much time has passed since drag began
                          timeDelta = currentDragTimeStamp - initialDragTimeStamp;

                          // Distance pointer has travelled since drag began
                          positionYDelta = currentPositionY - initialPositionY;

                          // If pointer has moved more than 50pt in less than 50ms...
                          if (timeDelta < 50 && positionYDelta > 50) {
                          // close modal
                          }
                          }


                          And on your GestureDetector:



                          GestureDetector(
                          onVerticalDragStart: (details) => _startVerticalDrag(details),
                          onVerticalDragUpdate: (details) => _whileVerticalDrag(details)
                          )


                          details refers to DragUpdateDetails and passes event information



                          Keep in mind if the modal includes a ListView or anything else that would block scroll gestures, you'll want to include something like this to keep receiving them.







                          share|improve this answer














                          share|improve this answer



                          share|improve this answer








                          edited 2 days ago

























                          answered 2 days ago









                          Tyler HayesTyler Hayes

                          113




                          113






























                              draft saved

                              draft discarded




















































                              Thanks for contributing an answer to Stack Overflow!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid



                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function () {
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53424071%2fflutter-drag-down-to-pop-modalroute-page%23new-answer', 'question_page');
                              }
                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              Popular posts from this blog

                              Costa Masnaga

                              Fotorealismo

                              Sidney Franklin