flutter_boost icon indicating copy to clipboard operation
flutter_boost copied to clipboard

swift中通过addChild()添加一个FBFlutterViewContainer子视图到当前页面上时,侧滑返回必崩溃,而且无法禁止侧滑返回。

Open HQ-2019 opened this issue 2 years ago • 2 comments

在原来的swift项目上集成flutter, Flutter版本: 3.7.7 FlutterBoost: 4.2.0 iPhone 11 , iOS 16.3.1

复现流程: 在原生的二级页面上,通过addChild()的方式将一个FBFlutterViewContainer实例添加到当前页面上,通过侧滑返回时程序产出崩溃。 如果通过addChild()添加多个子页面,有原生UIViewController也有FBFlutterViewContainer时,如果侧滑时当前显示的是一个原生页面,不会产生崩溃,如果侧滑时当前是一个FBFlutterViewContainer页面,必定产生崩溃。

并且addChild一个FBFlutterViewContainer页面后,在当前页面上使用navigationController?.interactivePopGestureRecognizer?.isEnabled = false来视图关闭侧滑返回功能将不会生效(addChild中没有FBFlutterViewContainer页面时,是生效的)

崩溃日志: *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSSingleObjectArrayI objectAtIndex:]: index 18446744073709551615 beyond bounds [0 .. 0]' terminating with uncaught exception of type NSException

可复现的代码实例: override func viewDidLoad() { super.viewDidLoad()

    let controller:FBFlutterViewContainer = FBFlutterViewContainer()
    controller.setName("trustCirclePage", uniqueId: nil, params: nil, opaque: true)
    
    addChild(controller)
    view.addSubview(controller.view)
    
    controller.view.snp.makeConstraints { make in
        make.top.left.right.bottom.equalToSuperview()
    }
    controller.didMove(toParent: self)
}

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    navigationController?.interactivePopGestureRecognizer?.isEnabled = false
}

HQ-2019 avatar Mar 24 '23 10:03 HQ-2019

没人维护人员来帮忙看一下这个问题么??

HQ-2019 avatar Mar 28 '23 02:03 HQ-2019

@willn1987 看看这个PR(#pull/1791)是否可以解决你的问题?

0xZOne avatar Jun 10 '23 15:06 0xZOne