返回
无需openPage,仅需三步让flutter_boost兼容iOS侧滑
前端
2023-11-14 23:07:00
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。
实施步骤
- 修改Flutter Boost实现: 将Flutter Boost的“容器”方式修改为“模态”方式。
- 在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;
}
- 在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源代码,值得强烈推荐。
常见问题解答
-
为什么Flutter Boost默认使用“容器”方式?
- “容器”方式简单易用,开发人员无需编写额外的代码。
-
“模态”方式有什么优点?
- “模态”方式更灵活,允许开发人员控制Flutter VC是否与容器一起弹出。
-
修改Flutter Boost实现是否需要技术经验?
- 对于有一定iOS开发经验的开发人员来说,修改Flutter Boost的实现相对容易。
-
实施这些步骤后,Flutter Boost还会出现其他问题吗?
- 经过测试,实施这些步骤后,Flutter Boost未出现其他问题。
-
Flutter Boost与iOS侧滑手势兼容后有什么好处?
- 开发人员可以在Flutter Boost项目中无缝使用iOS侧滑手势,为用户提供更好的导航体验。