Flutter drag down to pop ModalRoute page
Hei i have app like this
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
add a comment |
Hei i have app like this
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
add a comment |
Hei i have app like this
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
Hei i have app like this
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
dart flutter flutter-layout
asked Nov 22 '18 at 4:49
RIFALRIFAL
7411
7411
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
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.
add a comment |
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.
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
add a comment |
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.
add a comment |
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.
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.
answered Jan 18 at 10:49
TejaDroidTejaDroid
3,76421828
3,76421828
add a comment |
add a comment |
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.
add a comment |
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.
add a comment |
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.
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.
edited 2 days ago
answered 2 days ago
Tyler HayesTyler Hayes
113
113
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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