Closed 312223105 closed 5 years ago
关于页面的理解 在Native和Flutter表示页面的对象和概念是不一致的。在Native,我们对于页面的概念一般是ViewController,Activity。而对于Flutter我们对于页面的概念是Widget。我们希望可统一页面的概念,或者说弱化抽象掉Flutter本身的Widget对应的页面概念。换句话说,当一个Native的页面容器存在的时候,FlutteBoost保证一定会有一个Widget作为容器的内容。所以我们在理解和进行路由操作的时候都应该以Native的容器为准,Flutter Widget依赖于Native页面容器的状态。
那么在FlutterBoost的概念里说到页面的时候,我们指的是Native容器和它所附属的Widget。所有页面路由操作,打开或者关闭页面,实际上都是对Native页面容器的直接操作。无论路由请求来自何方,最终都会转发给Native去实现路由操作。这也是接入FlutterBoost的时候需要实现Platform协议的原因。
另一方面,我们无法控制业务代码通过Flutter本身的Navigator去push新的Widget。对于业务不通过FlutterBoost而直接使用Navigator操作Widget的情况,包括Dialog这种非全屏Widget,我们建议是业务自己负责管理其状态。这种类型Widget不属于FlutterBoost所定义的页面概念。
理解这里的页面概念,对于理解和使用FlutterBoost至关重要。
详情请见介绍文章: 文章
那么,原生工程本来就有自己的路由框架,集成flutter之后,要把路由框架替换成flutter_boost吗?
flutter_boost 并没有提供路由实现,你只需要把现有的路由框架接入boost即可。实现Platform协议,然后在原有的路由里面增加判断,如果是flutter页面则创建Native容器。
flutter_boost能维护管理的只是 flutter_boost 自己 继承自 Navigator 重写的BoostContainer 至于flutter系统的Navigator需要结合业务自己去管理。