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

灵感集网站网站程序语言

灵感集网站,网站程序语言,wordpress轻社区,网页设计教程 百度网盘在 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/14484874/

相关文章:

  • 旅游企业公司网站建设wordpress 相关文章
  • 捷讯官网 网站建设企业网站托管外包方案
  • 学做网站看那个网注册公司的条件和费用
  • 赤水网站建设网络游戏网站开发
  • 2013深圳网站设计公司排名番禺网站推广
  • 河南省住房和城乡建设厅网站首页在线做gif图网站
  • 福州市城乡建设局网站建行官网个人银行
  • 韩都衣舍网站建设方案联盟或专业团体的官方网站的建设
  • 建设网站的网站是什么wordpress适合移动端的主题
  • wordpress 样式插件seo裤子的关键词首页排名有哪些
  • 淘宝网站建设方案模板简述网站建设一般流程
  • 梁山有没有做企业网站的视频网站中滑动列表怎么做
  • 陕西省网站开发遵义城乡建设网站
  • 风琴折叠图片效果网站建设银行嘉兴分行网站首页
  • 五年级信息做网站的软件北京朝阳区互联网公司有哪些
  • 网站建设制作方法wordpress玻璃透主题
  • 个人建网站怎么赚钱高职高专图书馆网站建设
  • 崇文网站开发高港区企业网站建设
  • 做外贸 需要做网站吗成都住房和城乡建设局 网站首页
  • 上海市建设干部学校网站大型电子商务系统网站建设
  • 福州网站建设做外贸网站空间多少g
  • 建设网站导航怎么盈利湖南网站建设工作室
  • 旅游类网站模板怎么用word做网站
  • 不一样维度的网站wordpress怎么做淘宝推广
  • 二级网站怎样被百度收录扬州专业外贸网站建设推广
  • 网站优化人员thinkphp官方网站
  • 钓鱼网站开发做网站要学的教程
  • 做音响的是哪个网站营销型网站备案
  • 简单的设计网站wordpress怎么流量赚钱
  • 视频教做家常菜的网站做网站推广的一般都是什么公司