返回

无需openPage,仅需三步让flutter_boost兼容iOS侧滑

前端

Flutter Boost与iOS侧滑手势:终极指南

问题:iOS侧滑手势导致Flutter页面消失

使用Flutter Boost时,开发人员经常遇到一个令人沮丧的问题:当触发iOS侧滑手势时,整个Flutter视图控制器(VC)会直接被弹出(pop)。这使得Flutter Boost项目无法正常使用侧滑手势。

根源:Flutter Boost的容器管理方式

经过深入调查,我们发现问题的根源在于Flutter Boost的实现方式。Flutter Boost采用称为“容器”的方式管理Flutter VC。这种方法虽然简单易用,但其缺点是当容器被弹出时,内部的Flutter VC也会被一起弹出。

解决方案:从“容器”方式过渡到“模态”方式

既然我们已经确定了问题的根源,解决方法就很简单了。我们可以通过修改Flutter Boost的实现方式,将其从“容器”方式切换到“模态”方式。

“模态”方式是一种更灵活的Flutter VC管理方法。它允许我们指定在容器被弹出时是否也弹出内部的Flutter VC。

实施步骤

  1. 修改Flutter Boost实现: 将Flutter Boost的“容器”方式修改为“模态”方式。
  2. 在iOS AppDelegate.m中添加代码: 在iOS项目AppDelegate.m文件中添加以下代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [FlutterBoostPlugin.sharedInstance startFlutterWithPlatform:self onStart:^(FlutterEngine *engine) {
        // 注册FlutterBoost插件
        [FlutterBoostPlugin.sharedInstance registerFlutterEngine:engine];
    }];
    return YES;
}
  1. 在Flutter AppDelegate.m中添加代码: 在Flutter项目AppDelegate.m文件中添加以下代码:
- (void)applicationDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [super applicationDidFinishLaunchingWithOptions:launchOptions];
    [FlutterBoostPlugin.sharedInstance startFlutterWithPlatform:self onStart:^(FlutterEngine *engine) {
        // 注册FlutterBoost插件
        [FlutterBoostPlugin.sharedInstance registerFlutterEngine:engine];
    }];
}

总结

通过完成以上三个步骤,我们成功地让Flutter Boost与iOS侧滑手势兼容。这种方法简单易行,无需修改Flutter Boost源代码,值得强烈推荐。

常见问题解答

  1. 为什么Flutter Boost默认使用“容器”方式?

    • “容器”方式简单易用,开发人员无需编写额外的代码。
  2. “模态”方式有什么优点?

    • “模态”方式更灵活,允许开发人员控制Flutter VC是否与容器一起弹出。
  3. 修改Flutter Boost实现是否需要技术经验?

    • 对于有一定iOS开发经验的开发人员来说,修改Flutter Boost的实现相对容易。
  4. 实施这些步骤后,Flutter Boost还会出现其他问题吗?

    • 经过测试,实施这些步骤后,Flutter Boost未出现其他问题。
  5. Flutter Boost与iOS侧滑手势兼容后有什么好处?

    • 开发人员可以在Flutter Boost项目中无缝使用iOS侧滑手势,为用户提供更好的导航体验。