当前位置: 首页 > news >正文

灵感集网站深圳建设集团地址在哪里

灵感集网站,深圳建设集团地址在哪里,答题助手网站怎么做的,企业宣传片文案在 Flutter项目中集成完 flutter boost#xff0c;并且已经使用了 flutter boost进行了路由管理#xff0c;这时如果需要和iOS混合开发#xff0c;这时就要到 原生端进行集成。 注意#xff1a;之前建的项目必须是 Flutter module项目#xff0c;并且原生项目和flutter m…在 Flutter项目中集成完 flutter boost并且已经使用了 flutter boost进行了路由管理这时如果需要和iOS混合开发这时就要到 原生端进行集成。 注意之前建的项目必须是 Flutter module项目并且原生项目和flutter module项目在同一个文件夹下面 下面是原生端集成 flutter boost的步骤 在原生项目的 Podfile文件中添加如下代码 # Uncomment the next line to define a global platform for your project platform :ios, 12.0flutter_application_path ../my_flutter load File.join(flutter_application_path, .ios, Flutter, podhelper.rb)target FlutterList do# Comment the next line if you dont want to use dynamic frameworksuse_frameworks!# Pods for FlutterListinstall_all_flutter_pods(flutter_application_path)pod Masonry, 1.0.2endpost_install do |installer|flutter_post_install(installer) if defined?(flutter_post_install) end 填写完后指向 pod install。此时项目的pod目录下面就会出现 flutter相关的库 到此就完成 flutter混合开发的集成工作接下来就是需要 编写使用代码 编写混合开发代码 这里没有跟着flutter boost 官网进行集成 https://github.com/alibaba/flutter_boost/blob/master/docs/install.md 创建代码稍微进行了些改进。 HYFlutterBoostDelegate HYFlutterViewContainer HYFlutterViewController 分别创建了以上代码并且在AppDelegate 中使用 FlutterBoost。 HYFlutterBoostDelegate import Foundation import flutter_boostclass HYFlutterBoostDelegate: NSObject, FlutterBoostDelegate {///您用来push的导航栏var navigationController:UINavigationController? {return UINavigationController.topNavigationController()?.navigationController}///用来存返回flutter侧返回结果的表var resultTable:DictionaryString,([AnyHashable:Any]?)-Void [:];func pushNativeRoute(_ pageName: String!, arguments: [AnyHashable : Any]!) {//可以用参数来控制是push还是poplet isPresent arguments[isPresent] as? Bool ?? falselet isAnimated arguments[isAnimated] as? Bool ?? true//这里根据pageName来判断生成哪个vc这里给个默认的了let targetViewController UIViewController()// 这里也可以使用路由进行跳转if(isPresent){self.navigationController?.present(targetViewController, animated: isAnimated, completion: nil)}else{self.navigationController?.pushViewController(targetViewController, animated: isAnimated)}}func pushFlutterRoute(_ options: FlutterBoostRouteOptions!) {let vc:HYFlutterViewController HYFlutterViewController()vc.setName(options.pageName, uniqueId: options.uniqueId, params: options.arguments,opaque: options.opaque)vc.hidesBottomBarWhenPushed true//对这个页面设置结果resultTable[options.pageName] options.onPageFinished;if let nav navigationController {nav.pushViewController(vc, animated: true)}}func popRoute(_ options: FlutterBoostRouteOptions!) {//如果当前被present的vc是container那么就执行dismiss逻辑if let vc self.navigationController?.presentedViewController as? HYFlutterViewController, vc.uniqueIDString() options.uniqueId{//这里分为两种情况由于UIModalPresentationOverFullScreen下生命周期显示会有问题//所以需要手动调用的场景从而使下面底部的vc调用viewAppear相关逻辑if vc.modalPresentationStyle .overFullScreen {//这里手动beginAppearanceTransition触发页面生命周期self.navigationController?.topViewController?.beginAppearanceTransition(true, animated: false)vc.dismiss(animated: true) {self.navigationController?.topViewController?.endAppearanceTransition()}}else{//正常场景直接dismissvc.dismiss(animated: true, completion: nil)}}else{self.navigationController?.popViewController(animated: true)}//否则直接执行pop逻辑//这里在pop的时候将参数带出,并且从结果表中移除if let onPageFinshed resultTable[options.pageName] {onPageFinshed(options.arguments)resultTable.removeValue(forKey: options.pageName)}}}HYFlutterViewContainer #import flutter_boost/FlutterBoost.hNS_ASSUME_NONNULL_BEGINinterface HYFlutterViewContainer : FBFlutterViewContainerendNS_ASSUME_NONNULL_END#import HYFlutterViewContainer.hinterface HYFlutterViewContainer (){UINavigationBar *_bar; }property (nonatomic)BOOL navigationBarHidden; property (nonatomic, strong) FBVoidCallback removeEventCallback;endimplementation HYFlutterViewContainer- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view. }- (void)viewWillAppear:(BOOL)animated {[super viewWillAppear:animated];[self.navigationController setNavigationBarHidden:YES animated:animated]; }/// 设置这个container对应的从flutter过来的事件监听 -(void)setupEventListeningFromFlutter{__weak typeof(self) weakSelf self;// 为这个容器注册监听监听内部的flutterPage往这个容器发的事件self.removeEventCallback [FlutterBoost.instance addEventListener:^(NSString *name, NSDictionary *arguments) {__strong typeof(self) strongSelf weakSelf;//事件名NSString *event arguments[event];//事件参数NSDictionary *args arguments[args];if ([event isEqualToString:enablePopGesture]) {// 多page情况下的侧滑动态禁用和启用事件NSNumber *enableNum args[enable];BOOL enable [enableNum boolValue];//右滑控制 // strongSelf.fd_interactivePopDisabled !enable;}} forName:self.uniqueId]; }- (BOOL)navigationBarHidden {return YES; }- (UINavigationBar *)navBar {if (!_bar) {_bar [UINavigationBar new];}return _bar; }- (BOOL)shouldAutorotate {return NO; }- (UIInterfaceOrientationMask)supportedInterfaceOrientations {return UIInterfaceOrientationMaskPortrait; }endHYFlutterViewController #import UIKit/UIKit.h #import HYFlutterViewContainer.hinterface HYFlutterViewController : UIViewControllerproperty (nonatomic, strong) HYFlutterViewContainer *container;- (NSString *)uniqueIDString;- (void)setName:(NSString *)name uniqueId:(NSString *)uniqueId params:(NSDictionary *)params opaque:(BOOL) opaque;end #import HYFlutterViewController.h #import Masonry/Masonry.h #import UINavigationControllerHY.hinterface HYFlutterViewController ()endimplementation HYFlutterViewController- (void)setName:(NSString *)name uniqueId:(NSString *)uniqueId params:(NSDictionary *)params opaque:(BOOL) opaque {_container [HYFlutterViewContainer new];[_container setName:name uniqueId:uniqueId params:params opaque:opaque]; }- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.// 隐藏导航栏[self.container.navigationController setNavigationBarHidden:YES animated:YES];[self addChildViewController:_container];[_container didMoveToParentViewController:self];[self.view addSubview:_container.view];[_container.view mas_makeConstraints:^(MASConstraintMaker *make) {make.edges.mas_equalTo(UIEdgeInsetsZero);}]; }- (NSString *)uniqueIDString {return self.container.uniqueIDString; }- (void)dealloc {[_container removeFromParentViewController];[_container didMoveToParentViewController:nil]; }end AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {HYFlutterBoostDelegate* delegate [[HYFlutterBoostDelegate alloc]init];[FlutterBoost.instance setup:application delegate:delegate callback:^(FlutterEngine *engine) {NSLog(FlutterBoost 开始操作);}];self.window [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];self.window.backgroundColor [UIColor whiteColor];ViewController* VC [[ViewController alloc]init];UINavigationController *nav [[UINavigationController alloc] initWithRootViewController:VC];self.window.rootViewController nav;[self.window makeKeyAndVisible];return YES; }使用 Flutter boost进行调转 - (void)btnClick:(UIButton *)btn {FlutterBoostRouteOptions* option [[FlutterBoostRouteOptions alloc]init];option.pageName /;[[[FlutterBoost instance] plugin].delegate pushFlutterRoute:option]; } 到此flutter boost原生交互使用结束
http://www.hkea.cn/news/14340979/

相关文章:

  • 张家港网站开发网页微博怎么下载视频
  • 如何建单页网站栏目建设企业网站企业网上银行登录
  • 网站配色网页设计图片外链
  • 如何进行网站优化设计广西企业响应式网站建设公司
  • 模板网站建设价位玛多县网站建设公司
  • 现在可以用的网站广州网站建设功能
  • 企业网站备案多少钱影视网站策划书
  • 工程信息网站哪家做的较好北京58网站建设
  • 阜阳公司网站建设网站如何不被收录
  • 试客那个网站做的好微信网站怎么做的好
  • 创建网站的优势wordpress 优酷视频
  • 买了个域名 如何自己做网站潍坊高端网站开发
  • 企业网站的功能主要有网站地域分站怎么做
  • 做阿里巴巴网站图片大全公司的企业诚信建设分析
  • 公司网站建app宽带一般多少钱一个月
  • 公众号和网站网站页面打不开
  • 微信官方网站网址网站建设 html5
  • 做网站技术人员西地那非一粒能硬几天
  • 网站编辑超链接怎么做大数据推广公司
  • 北京专业网站制作流程优势装修平面图用什么软件简单
  • 阳谷网站建设网络推广哪个网站做任务给东西
  • 网站维护提醒php文件江苏网站建设要多少钱
  • 怎么用iapp做网站软件小说网站怎么建设
  • 网站怎么做漂亮点微信程序开发平台
  • 免费企业黄页查询网站企业网站用什么套站
  • 360网站建设服务大型做网站的公司有哪些
  • 高仿卡地亚手表网站做新闻微网站
  • 管网建设是什么意思青浦网站优化
  • 如何上传模板到网站网站建设中的风险
  • 小门户网站模版天津视频网站开发团队