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

灵感集网站ppt免费下载的网站

灵感集网站,ppt免费下载的网站,防火墙放行图片域名,phpcms做的网站在 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.dnsts.com.cn/news/49772.html

相关文章:

  • 在那做网站惠州企业网站建设选哪家
  • 企业网站建设规划工作表格excel下载
  • 展示型网站解决方案成都易站网站建设
  • 网站一个人可以做吗商城网站开发
  • 有免费建网站用php做的网站必备那些文件
  • 手机销售网站怎么做泰州网站建设公司
  • 手机网站建设注意事项大连网站建设佳熙科技
  • 网页模版之家重庆快速排名优化
  • 网站自己优化网站系统设计方案
  • 纯色直播seo培训价格
  • wordpress注册页面模板怎么修改自己做网站seo优化
  • unity3d可以做网站吗公众号绑定网站
  • 如何建立优秀企业网站宠物网站建设进度表
  • 百度收录网站电话柳城网站设计
  • 攀枝花市建设银行网站汽车网站开发毕业设计论文
  • flash网站特点5566网址大全设首页
  • 二手房地产中介网站建设标题制作网站
  • 百度给做的网站如何登陆网站后台家具网站建设目的及功能定位
  • 做网站一般需要哪些文件夹网站展示重点
  • 泉州找工作网站凡客资源
  • php网站开发工作描述网站套站什么意思
  • 信息手机网站模板下载软件谷歌浏览器中文手机版
  • 百度怎样建立一个网站dedecms建网站
  • 做网站买域名多少钱建设网站终身免费
  • 找项目去哪个网站北京亦庄网站建设公司
  • 网站架设流程wordpress数据库密码错误
  • 网站原型男女做爰视频网站在线
  • 厦门电脑网站建设百度推广营销方案
  • 网站模板预览与编辑器做小程序公司哪家好
  • 合肥地区建网站公司房地产网站策划