Flutter:带有数据的 iOS 向后滑动手势

Posted

技术标签:

【中文标题】Flutter:带有数据的 iOS 向后滑动手势【英文标题】:Flutter: iOS swipe back gesture with data 【发布时间】:2020-02-23 13:11:23 【问题描述】:

我正在尝试实现一种将数据发送回先前路由的方法。 Navigator.of(context).pop 函数允许一个参数在与按钮按下时完美配合。问题是:在 android 上,用户也可以通过 Android 特定的后退按钮返回,所以我尝试在 WillPopScope-widget 的帮助下捕捉到这一点。在 onWillPop 参数中,我再次使用 Navigator.of(context).pop(data),所以现在这项工作在 Android 上完成了。新问题是:现在,由于 WillPopScope 小部件,ios 上的向后滑动手势不再起作用。

所以,问题是:我如何才能将数据发送回之前的路由,无论用户是点击了我放在那里的按钮、点击了 Android 特定的后退按钮还是在 iOS 上使用了向后滑动手势?

希望清楚:)

【问题讨论】:

【参考方案1】:

对于 iOS,您可以像这样实现 CupertinoPageRoute 而不是 MaterialPageRoute:

import 'dart:io';
import 'package:flutter/cupertino.dart';

if(Platform.isIOS) 
   CupertinoPageRoute route = CupertinoPageRoute(
                           settings: RouteSettings(arguments: YOUR ARGUMENTS),
                           builder: (context) => SecondPage());

 
await Navigator.push(context, route);

现在您可以访问当您向后滑动时在 settings 属性中传递的参数。

我希望这能解决您的问题。

【讨论】:

那么当我通过滑动关闭页面时如何将数据传递给 Navigator? @VladislavLen in CupertinoPageRoute 你通过参数传递数据

以上是关于Flutter:带有数据的 iOS 向后滑动手势的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 7 上的 UINavigationController 中禁用向后滑动手势

在 UIWebView 中向后/向前滑动手势?

CapacitorJS iOS 使用 Vue Router 向后滑动会导致空白页面

ios15在隐藏导航栏时向后半滑动会留下顶部空白空间 - SwiftUI

Flutter - 关于手势的用户教育(滑动)

SwiftUI - navigationBarBackButtonHidden - 向后滑动手势?