Jun*_*riq 8 ios flutter flutter-layout
我正在创建一个应用程序,我可以完全手动控制每次后退按钮的按下。
我基本上在我的应用程序中更改了小部件/视图,而不是导航器推送和弹出新屏幕。
我创建了一个功能,可以显示视图 1,2 和 3。并使用 Android 上的后退按钮返回。然而,在 iOS 上,后退手势不起作用,我无法更改视图。
有什么解决方法吗?如有帮助,将不胜感激
Future<bool> goBackward(){
if(_isButtonPressed) {
if(currentView == 0)
{
return Future<bool>.value(true);
}
else if(currentView == 1)
{
currentView = 0;
notifyListeners();
return Future<bool>.value(false);
}
else
{
currentView = 2;
notifyListeners();
return Future<bool>.value(false);
}
}
}
Run Code Online (Sandbox Code Playgroud)
以上是代码的最小版本。当我返回 true 时,这意味着我已准备好在后按时弹出屏幕
Jun*_*riq 16
在网上搜索并尝试了许多软件包(例如cupertino_will_pop_scope和back_button_interceptor)后,我发现它们都不适合我的用例。
cupertino_will_pop_scope是一个错过和命中的事情,所以有时它有效,有时则无效。
对于尚未找到答案的人来说,这是一个解决方案。
正如我之前提到的,WillPopScope 在 Android 上完美运行,因此无需更改那里的功能。
然而,对于 IOS,我使用手势检测器来检测左侧手势的滑动,并相应地执行我的操作。
if(!Platform.isIOS)
{
//When OS is Android return the view as is
return MyView;
}
else{
//When OS is iOS return the view as is wrapped with GestreDetector
return GestureDetector(
onHorizontalDragUpdate: (details) {
//set the sensitivity for your ios gesture anywhere between 10-50 is good
int sensitivity = Integers().iosSwipeSensitivity;
if (details.delta.dx > sensitivity) {
//SWIPE FROM RIGHT DETECTION
goBackward();
}
},
child: MyView;
);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6274 次 |
| 最近记录: |