DStack Api使用说明
1.dart侧Api
开放api在DStack类中
/// DStack注册,在app启动时调用
/// builders 页面buliders,observer 生命周期回调
void register(
{Map<String, DStackWidgetBuilder> builders,
DLifeCycleObserver observer}) {
if (builders?.isNotEmpty == true) {
_pageBuilders.addAll(builders);
}
dLifeCycleObserver = observer;
}/// 获取节点列表
Future<List<DStackNode>> nodeList() {
return channel.getNodeList();
}/// routeName 路由名,pageType native或者flutter, params 参数
static Future push(String routeName, PageType pageType,
{Map params, String storyboard, String identifier}) {
return DNavigatorManager.push(
routeName, pageType, params, storyboard, identifier);
}/// 提供外界直接传builder的能力
static Future pushBuild(String routeName, WidgetBuilder builder,
{Map params}) {
return DNavigatorManager.pushBuild(routeName, builder, params);
}/// 只支持flutter使用,替换flutter页面
static Future replace(String routeName, PageType pageType,
{Map params, String storyboard, String identifier}) {
return DNavigatorManager.replace(
routeName, pageType, params, storyboard, identifier);
}/// pop可以不传路由信息 result 返回值,可为空
/// 注意
/// 在flutter侧的导航栏调用该函数时,必须是拦截了flutter自带的导航栏返回事件
/// 拦截导航栏点击返回事件的方法,重写AppBar的leading Widget即可
static void pop({Map result}) {
DNavigatorManager.pop(result);
}/// ios手势返回
/// 注意事项同pop
static void popWithGesture() {
DNavigatorManager.popWithGesture();
}/// routeName 路由名,pageType native或者flutter, result 返回值,可为空
/// 注意事项同pop
static void popTo(String routeName, PageType pageType, {Map result}) {
DNavigatorManager.popTo(routeName, pageType, result);
}/// 返回根节点
/// 注意事项同pop
static void popToNativeRoot() {
DNavigatorManager.popToNativeRoot();
}/// 跨模块返回, skipName 模块名称,result 返回值,可为空
/// 注意事项同pop
static void popSkip(String skipName, {Map result}) {
DNavigatorManager.popSkip(skipName, result);
}/// ios独有,present方式打开页面
/// routerName 路由名 pageType native或者flutter,
/// params 参数,可谓空
static void present(String routeName, PageType pageType,
{Map params}) {
DNavigatorManager.present(
routeName, pageType, params, storyboard, identifier);
}/// ios独有,dismiss方式关闭页面,result 返回值,可为空
static void dismiss([Map result]) {
DNavigatorManager.dismiss(result);
}2.Android侧Api
开放api在DStack类中
/**
* 初始化DStack
*
* @param context 全局上下文对象
* @param nativeRouter flutter打开native页面的路由回调
*/
public void init(Context context, INativeRouter nativeRouter) {
......
}/**
* 注册app生命周期监听
* param context 上下文对象
*/
private void registerAppLifecycleObserver(Context context) {
......
}/**
* native侧打开flutter页面
*
* @param pageRouter 页面路由地址
* @param params 参数
* @param containerCls flutter页面容器activity的类对象
*/
public void pushFlutterPage(String pageRouter, Map<String, Object> params, Class<?> containerCls) {
......
}/**
* native侧关闭flutter页面
* @param pageRouter 页面路由地址
* @param params 参数
*/
public void popFlutterPage(String pageRouter, Map<String, Object> params) {
......
}/**
* native侧返回指定页面
* @param pageRouter 页面路由地址
* @param params 参数
*/
public void popTo(String pageRouter, Map<String, Object> params) {
......
}/**
* 返回根页面
*/
public void popToRoot() {
......
}2.iOS侧Api
开放api在DStack类中
/// 是否开启log打印 /// @param enable enable - (void)logEnable:(BOOL)enable;
/// push打开一个flutter页面
/// @param cls 当前DFlutterViewController的class或它的子类
/// @param route flutter页面的route
- (void)pushFlutterPageWithFlutterClass:(Class)cls
route:(NSString *)route;/// push打开一个flutter页面
/// @param cls 当前DFlutterViewController的class或它的子类
/// @param route flutter页面的route
/// @param params 传递给flutter页面的参数
- (void)pushFlutterPageWithFlutterClass:(Class)cls
route:(NSString *)route
params:(nullable NSDictionary *)params;/// push打开一个flutter页面
/// @param cls 当前DFlutterViewController的class或它的子类
/// @param route flutter页面的route
/// @param params 传递给flutter页面的参数
/// @param animated 是否开启转场动画
- (void)pushFlutterPageWithFlutterClass:(Class)cls
route:(NSString *)route
params:(nullable NSDictionary *)params
animated:(BOOL)animated;/// push打开一个flutter页面
/// @param cls 当前DFlutterViewController的class或它的子类
/// @param route flutter页面的route
/// @param params 传递给flutter页面的参数
/// @param callBack 回调出当前的DFlutterViewController
/// @param animated 是否开启转场动画
- (void)pushFlutterPageWithFlutterClass:(Class)cls
route:(NSString *)route
params:(nullable NSDictionary *)params
controllerCallBack:(nullable void (^)(DFlutterViewController *))callBack
animated:(BOOL)animated;/// push打开一个flutter页面
/// 当前的FlutterViewController是从storyboard加载时调用
/// @param storyboard storyboardName
/// @param identifier identifier
/// @param route flutter页面的route
/// @param params 传递给flutter页面的参数
/// @param animated 是否开启转场动画
- (void)pushFlutterPageWithStoryboard:(NSString *)storyboard
identifier:(NSString *)identifier
route:(NSString *)route
params:(nullable NSDictionary *)params
animated:(BOOL)animated;/// push打开一个flutter页面
/// 当前的FlutterViewController是从storyboard加载时调用
/// @param storyboard storyboardName
/// @param identifier identifier
/// @param route flutter页面的route
/// @param params 传递给flutter页面的参数
/// @param callBack 回调出当前的DFlutterViewController
/// @param animated 是否开启转场动画
- (void)pushFlutterPageWithStoryboard:(NSString *)storyboard
identifier:(NSString *)identifier
route:(NSString *)route
params:(nullable NSDictionary *)params
controllerCallBack:(nullable void (^)(DFlutterViewController *))callBack
animated:(BOOL)animated;/// present打开一个flutter页面
/// @param cls 当前DFlutterViewController的class或它的子类
/// @param route flutter页面的route
/// @param from 起点controller
- (void)presentFlutterPageWithFlutterClass:(Class)cls
route:(NSString *)route
from:(UIViewController *)from;/// present打开一个flutter页面
/// @param cls 当前DFlutterViewController的class或它的子类
/// @param route flutter页面的route
/// @param params 传递给flutter页面的参数
/// @param from 起点controller
- (void)presentFlutterPageWithFlutterClass:(Class)cls
route:(NSString *)route
params:(nullable NSDictionary *)params
from:(UIViewController *)from;/// present打开一个flutter页面
/// @param cls 当前DFlutterViewController的class或它的子类
/// @param route flutter页面的route
/// @param params 传递给flutter页面的参数
/// @param animated 是否开启转场动画
/// @param from 起点controller
/// @param root cls对应的controller所属的rootViewController
/// root有两种情况:root:UINavigationController、UITabBarController
- (void)presentFlutterPageWithFlutterClass:(Class)cls
route:(NSString *)route
params:(nullable NSDictionary *)params
animated:(BOOL)animated
from:(UIViewController *)from
rootController:(nullable Class)root;/// present打开一个flutter页面
/// @param cls 当前DFlutterViewController的class或它的子类
/// @param route flutter页面的route
/// @param params 传递给flutter页面的参数
/// @param animated 是否开启转场动画
/// @param from 起点controller
/// @param callBack 回调出当前的DFlutterViewController
/// @param root cls对应的controller所属的rootViewController
/// root有两种情况:root:UINavigationController、UITabBarController
- (void)presentFlutterPageWithFlutterClass:(Class)cls
route:(NSString *)route
params:(nullable NSDictionary *)params
animated:(BOOL)animated
from:(UIViewController *)from
controllerCallBack:(nullable void (^)(DFlutterViewController *))callBack
rootController:(nullable Class)root;/// present打开一个flutter页面
/// 当前的FlutterViewController是从storyboard加载时调用
/// @param storyboard storyboardName
/// @param identifier identifier
/// @param route flutter页面的route
/// @param params 传递给flutter页面的参数
/// @param animated 是否开启转场动画
/// @param from 起点controller
/// @param root cls对应的controller所属的rootViewController
/// root有两种情况:root:UINavigationController、UITabBarController
- (void)presentFlutterPageWithStoryboard:(NSString *)storyboard
identifier:(NSString *)identifier
route:(NSString *)route
params:(nullable NSDictionary *)params
animated:(BOOL)animated
from:(UIViewController *)from
rootController:(nullable Class)root;/// present打开一个flutter页面
/// 当前的FlutterViewController是从storyboard加载时调用
/// @param storyboard storyboardName
/// @param identifier identifier
/// @param route flutter页面的route
/// @param params 传递给flutter页面的参数
/// @param animated 是否开启转场动画
/// @param from 起点controller
/// @param callBack 回调出当前的DFlutterViewController
/// @param root cls对应的controller所属的rootViewController
/// root有两种情况:root:UINavigationController、UITabBarController
- (void)presentFlutterPageWithStoryboard:(NSString *)storyboard
identifier:(NSString *)identifier
route:(NSString *)route
params:(nullable NSDictionary *)params
animated:(BOOL)animated
from:(UIViewController *)from
controllerCallBack:(nullable void (^)(DFlutterViewController *))callBack
rootController:(nullable Class)root;/// 返回到指定的Flutter page
/// 方法调用时机:如果需要popTo的页面是Flutter页面时,必须调用该方法实现
/// 如果popTo的页面是Native页面,则使用navigationController的 popToViewController:animated:
/// @param route page的路由
/// @param animated 返回动画
- (void)popToPageWithFlutterRoute:(NSString *)route
animated:(BOOL)animated;
- (void)popToPageWithFlutterRoute:(NSString *)route
params:(nullable NSDictionary *)params
animated:(BOOL)animated;
