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;