Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

iOS swipe back #2

Open
damywise opened this issue Feb 23, 2023 · 4 comments
Open

iOS swipe back #2

damywise opened this issue Feb 23, 2023 · 4 comments

Comments

@damywise
Copy link

Any way to swipe back to previous page like in iOS?

@caseycrogers
Copy link
Owner

This has been on my list to figure out for awhile, I'll take a look at it this weekend and see if I can come up with something.

side rant: I hate how apple decided to implement the back gesture with an intense and fiery passion

@caseycrogers
Copy link
Owner

caseycrogers commented Feb 26, 2023

So I thought about this for a bit and I don't think there's a good way to use Implicit Navigator as intended AND have the iOS back gesture

Namely, Implicit Navigator is intended to be used in a nested fashion. Navigation "pages" that take up an entire screen and animate the whole screen in and out on change are, frankly, a dated, bad and overly limiting design paradigm. Because Apple is bad and should feel bad, their back gesture is tied to a full screen page transition animation and thus fundamentally paired with this shitty design principle of full screen pages.

It'd be fairly trivial to add a way to use Cupertino routes in an Implicit Navigator, and I'll push a PR today that does this, but it's really not in-line with how Implicit navigator is supposed to be used. I'm tempted to create a separate package that emulates the android back gesture behavior on iOS. This would allow users to still use the back gesture as they'd expect to be able to, but without the associated animation. This is the direction iOS SHOULD go in anyway, but won't because Apple is a stubborn company that will willfully degrade their product UX in the name of brand differentiation.

If I get around to making this separate package I'll link it here.

@btrautmann
Copy link

btrautmann commented May 28, 2023

Out of curiosity--any interest in supporting a back-swipe gesture similar to how Android does it? IIRC (been a minute since I've used Android as my personal device OS), they show like a little arrow thingy as you swipe back, but they don't reveal the screen behind the one on top of the stack. I'd be interested in toying with that as a contribution if you're interested. The main/obvious tradeoff is that this technically doesn't abide by the iOS design guidelines (shrug). I just can't stand when apps don't allow back swipe on iOS (it's actually a really rough UX not to), so if I was using ImplicitNav in a real/production app it'd be a deal breaker, and I really am liking IN so I don't want it to be so :)

@caseycrogers
Copy link
Owner

I feel bad that I haven't re-visited this issue in so long. Lots of other projects fighting for my time.

But yeah, that is how gestures work on Android and I think it'd be super valuable to the broader Flutter community (not just to Implicit Nav) to create a widget that provides this functionality. I've glanced into the guts of CupertinoPageRoute before and it seems like it'd be pretty easy to just extract it's relevant gesture detector and add an animated arrow to give the user some feedback.

Apple's way of handling back gestures is bizarre, stupid, and deeply bad for developers and users. Part of me hopes that the above approach could pick up steam and see a lot of use and Apple might feel compelled to rethink their approach. But then again, they make a point of valuing their pride and not copying other companies' innovations over the interests of their users. I wonder if they're so malicious that they'd reject your app for using the Android style back gesture over having no back gesture at all?

Rant aside, I'll try to get to this and publish it as a separate package. It's pretty lightweight and I think something that would be really useful. I should also do some digging around (I have before with no luck) and see if someone else has already published such a thing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants