如何实现从左侧滑动以退回手势?不确定它是否已经自动为iOS实现,但我也希望它也适用于Android(因为事情变得基于手势)。
答案 0 :(得分:3)
您可以将Theme.platform设置为TargetPlatform.ios。这将利用在所有设备上都使用向后滑动手势的方式。
答案 1 :(得分:1)
您可以将platform
(和theme
)中的darkTheme
设置为TargetPlatform.iOS
,可以将主题的pageTransitionsTheme
设置为
PageTransitionsTheme(builders: { TargetPlatform.android: CupertinoPageTransitionsBuilder(), TargetPlatform.iOS: CupertinoPageTransitionsBuilder(), })
,您可以使用CupertinoPageRoute
...加载新页面,在确保使用Navigator.push
(而不是Navigator.pushReplacement
)之前,这些都无法正常工作到新屏幕!我希望这可以帮助正在使用现有过渡并且没有注意到这一关键细节的任何人。 :)
答案 2 :(得分:0)
使用Sub MasterMacro()
Call EnableTimer
Call getMetaData1
ActiveWorkbook.Save
Application.Wait (Now + TimeValue("0:00:05"))
Call saveTableToCSV
Call getMetaData2
ActiveWorkbook.Save
Application.Wait (Now + TimeValue("0:00:05"))
Call saveTableToCSV
Call getMetaData3
ActiveWorkbook.Save
Application.Wait (Now + TimeValue("0:00:05"))
Call saveTableToCSV
Call getMetaData4
ActiveWorkbook.Save
Application.Wait (Now + TimeValue("0:00:05"))
Call saveTableToCSV
End Sub
使它在Android上运行;
CupertinoPageRoute
答案 3 :(得分:0)
您可以将 CupertinoPageRoute()
用作 Tom O'Sullivan said above。
但是,如果您想使用 PageRouteBuilder
对其进行自定义(例如,使用自定义过渡持续时间)并获得相同的滑动返回手势,那么您可以覆盖 buildTransitions()
。
对于 iOS,默认 PageTransitionBuilder
为 CupertinoPageTransitionsBuilder()
。所以我们可以在 buildTransitions()
中使用它。这会自动为我们提供向右滑动以返回手势。
以下是 CustomPageRouteBuilder
的一些示例代码:
class CustomPageRouteBuilder<T> extends PageRoute<T> {
final RoutePageBuilder pageBuilder;
final PageTransitionsBuilder matchingBuilder = const CupertinoPageTransitionsBuilder(); // Default iOS/macOS (to get the swipe right to go back gesture)
// final PageTransitionsBuilder matchingBuilder = const FadeUpwardsPageTransitionsBuilder(); // Default Android/Linux/Windows
CustomPageRouteBuilder({this.pageBuilder});
@override
Color get barrierColor => null;
@override
String get barrierLabel => null;
@override
Widget buildPage(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) {
return pageBuilder(context, animation, secondaryAnimation);
}
@override
bool get maintainState => true;
@override
Duration get transitionDuration => Duration(milliseconds: 900); // Can give custom Duration, unlike in MaterialPageRoute
@override
Widget buildTransitions(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child) {
return matchingBuilder.buildTransitions<T>(this, context, animation, secondaryAnimation, child);
}
}
然后转到一个新页面:
GestureDetector(
onTap: () => Navigator.push(
context,
CustomPageRouteBuilder(pageBuilder: (context, animation, secondaryAnimation) => NewScreen()),
),
child: ...,
)
答案 4 :(得分:-4)
这不应在Android上实现,因为它会使整个OS之间的交互不一致。
从屏幕边缘滑动回去并不是Android想要实现的事情,因此最好不要这样做。