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

名字logo设计免费百度seo效果

名字logo设计免费,百度seo效果,谁给个网站呀,管家婆进销存管理系统在使用Flutter混合开发中会遇到一些原生比Flutter优秀的控件,不想使用Flutter的控件,想在Flutter中使用原生控件。这时就会用到 Flutter页面中内嵌 原生view,这里简单介绍一个 内嵌 iOS 的view。 注:这里使用了 FlutterBoost。网…

在使用Flutter混合开发中会遇到一些原生比Flutter优秀的控件,不想使用Flutter的控件,想在Flutter中使用原生控件。这时就会用到 Flutter页面中内嵌 原生view,这里简单介绍一个 内嵌 iOS 的view。

注:这里使用了 FlutterBoost。网上大部分都是代码执行不起来,本案例起码可以正常使用。

  • 原生部分
    这里开始在原生部分进行处理
  • 自定义 view FlutterIosTextLabel
#import <Foundation/Foundation.h>
#import <Flutter/Flutter.h>NS_ASSUME_NONNULL_BEGIN@interface FlutterIosTextLabel : NSObject<FlutterPlatformView>@property (nonatomic, strong) UILabel *label;- (instancetype)initWithFrame:(CGRect)frameviewIdentifier:(int64_t)viewIdarguments:(id _Nullable)argsbinaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger;@endNS_ASSUME_NONNULL_END
#import "FlutterIosTextLabel.h"@implementation FlutterIosTextLabel//在这里只是创建了一个UILabel
- (instancetype)initWithFrame:(CGRect)frame viewIdentifier:(int64_t)viewId arguments:(id _Nullable)args binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger {if (self = [super init]) {self.label = [UILabel new];self.label.backgroundColor = [UIColor yellowColor];self.label.textColor = [UIColor redColor];self.label.textAlignment = NSTextAlignmentCenter;self.label.numberOfLines = 0;NSDictionary *dict = (NSDictionary *)args;NSString *textValue = dict[@"content"];self.label.text = [NSString stringWithFormat:@"我是iOSView \n在显示:%@", textValue];}return self;
}- (nonnull UIView *)view {return self.label;
}@end
  • 创建 FlutterIosTextLabelFactory
#import <Foundation/Foundation.h>
#import <Flutter/Flutter.h>NS_ASSUME_NONNULL_BEGIN@interface FlutterIosTextLabelFactory : NSObject<FlutterPlatformViewFactory>- (instancetype)initWithMessenger:(NSObject<FlutterBinaryMessenger>*)messenger;@endNS_ASSUME_NONNULL_END
#import "FlutterIosTextLabelFactory.h"
#import "FlutterIosTextLabel.h"@implementation FlutterIosTextLabelFactory
{NSObject<FlutterBinaryMessenger> *_messenger;
}- (instancetype)initWithMessenger:(NSObject<FlutterBinaryMessenger>*)messenger {self = [super init];if (self) {_messenger = messenger;}return self;
}- (NSObject<FlutterPlatformView>*)createWithFrame:(CGRect)frame viewIdentifier:(int64_t)viewId arguments:(id _Nullable)args {return [[FlutterIosTextLabel alloc] initWithFrame:frame viewIdentifier:viewId arguments:args binaryMessenger:_messenger];
}-(NSObject<FlutterMessageCodec> *)createArgsCodec{return [FlutterStandardMessageCodec sharedInstance];
}
  • 创建 FlutterIosTextLabelPlugin
#import <Foundation/Foundation.h>
#import <Flutter/Flutter.h>NS_ASSUME_NONNULL_BEGIN@interface FlutterIosTextLabelPlugin : NSObject<FlutterPlugin>
+ (void)registerWithRegistrar:(nonnull NSObject<FlutterPluginRegistrar> *)registrar;
@endNS_ASSUME_NONNULL_END
#import "FlutterIosTextLabelPlugin.h"
#import "FlutterIosTextLabelFactory.h"@implementation FlutterIosTextLabelPlugin+ (void)registerWithRegistrar:(nonnull NSObject<FlutterPluginRegistrar> *)registrar {//注册插件//注册 FlutterIosTextLabelFactory//custom_platform_view 为flutter 调用此  textLabel 的标识[registrar registerViewFactory:[[FlutterIosTextLabelFactory alloc] initWithMessenger:registrar.messenger] withId:@"custom_platform_view"];
}
@end

到此原生已经集成完成一半,重点是接下来部分。

在 AppDelegate 中集成使用
修改AppDelegate.h:修改继承为FlutterAppDelegate,并删除window属性,因为FlutterAppDelegate中已经自带window属性

#import <UIKit/UIKit.h>
#import <Flutter/Flutter.h>@interface AppDelegate : FlutterAppDelegate
@end

AppDelegate.m中引入相关头文件

#import "FlutterIosTextLabel.h"
#import "GeneratedPluginRegistrant.h"
#import "FlutterIosTextLabelPlugin.h"

在AppDelegate.m中注册插件,在引入 flutter_boost的情况下,需要等 flutter_boost初始化完成后,用FlutterEngine对插件进行初始化。

@interface AppDelegate ()@end@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {HYFlutterBoostDelegate* delegate = [[HYFlutterBoostDelegate alloc]init];self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];self.window.backgroundColor = [UIColor whiteColor];HYTabBarController *tab = [[HYTabBarController alloc]init];self.window.rootViewController = tab;[self.window makeKeyAndVisible];[FlutterBoost.instance setup:application delegate:delegate callback:^(FlutterEngine *engine) {NSLog(@"FlutterBoost 开始操作");// 使用 MethodChannel[HYFlutterNavChannel start];[HYFlutterCommonChannel start];// 初始化Flutter内嵌iOSView插件
//        NSObject<FlutterPluginRegistrar> *registrar = [engine registrarForPlugin:@"custom_platform_view_plugin"];
//        FlutterIosTextLabelFactory *factory = [[FlutterIosTextLabelFactory alloc] initWithMessenger:registrar.messenger];
//        [registrar registerViewFactory:factory withId:@"custom_platform_view"];// 升级处理NSObject<FlutterPluginRegistrar> *registrar = [engine registrarForPlugin:@"custom_platform_view_plugin"];[FlutterIosTextLabelPlugin registerWithRegistrar:registrar];}];return YES;
}@end

到此原生集成完毕,接下来在 Flutter中进行集成

  • Flutter 部分
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';class CMNativePage extends StatelessWidget {const CMNativePage({Key? key}) : super(key: key);Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text("详情"),),body: const Center(child: IOSCompositionWidget(),),);}
}class IOSCompositionWidget extends StatelessWidget {const IOSCompositionWidget({super.key});Widget build(BuildContext context) {// This is used in the platform side to register the view.const String viewType = 'custom_platform_view';// Pass parameters to the platform side.final Map<String, dynamic> creationParams = {'content': 'Flutter传给原生iOSView的参数'};return UiKitView(viewType: viewType,creationParams: creationParams,creationParamsCodec: const StandardMessageCodec(),);}
}

注册路由

static const String nativaPage = '/nativaPage';
 nativaPage: (settings, uniqued) {return MaterialPageRoute(settings: settings,builder: (_) {return const CMNativePage();});},

在Flutter地方使用

 TextButton(child: const Text("加载原生控件"),onPressed: () {BoostNavigator.instance.push(HYRouter.nativaPage, arguments: {"home": "home页面传递数值"});// showBottomWidget(context, const CMNativePage());},),

到此Flutter中也完成集成。
如果想要某些弹出样式,自己再进行处理。这里只是简单的使用Flutter 内嵌 iOS原生view。

注意事项

  1. FlutterIosTextLabelFactory中的createArgsCodec方法一定不能遗漏,否则会导致传值不成功。类型也一定要和Dart部分的native.dart->IOSCompositionWidget-> UiKitView-> creationParamsCodec保持一致。否则会导致崩溃。
  2. 使用官方文档中的写法是没有问题,但是本案例中使用了flutter_boost,再跟着官网集成就会出现问题。需要更flutter_boost初始化完成,再对FlutterEngine对插件进行初始化。
  3. 其中withId:xxx,xxx代表控件的ID,需要和Dart部分的IOSCompositionWidget中的viewType保持一致。命名为:custom_platform_view
  4. 其中registrarForPlugin:xxx,xxx代表插件的ID。命名为:custom_platform_view_plugin

文章转载自:
http://swathe.mzpd.cn
http://ytterbous.mzpd.cn
http://prostitute.mzpd.cn
http://arteriole.mzpd.cn
http://ionisation.mzpd.cn
http://dandy.mzpd.cn
http://watery.mzpd.cn
http://cryptoanalysis.mzpd.cn
http://vicariously.mzpd.cn
http://tagus.mzpd.cn
http://insurrectional.mzpd.cn
http://misanthrope.mzpd.cn
http://reflexology.mzpd.cn
http://smidgen.mzpd.cn
http://palmation.mzpd.cn
http://miss.mzpd.cn
http://superaqueous.mzpd.cn
http://uncompromisable.mzpd.cn
http://unquiet.mzpd.cn
http://hotjava.mzpd.cn
http://leptocephalic.mzpd.cn
http://arsenate.mzpd.cn
http://caip.mzpd.cn
http://apropos.mzpd.cn
http://dodgery.mzpd.cn
http://carex.mzpd.cn
http://effloresce.mzpd.cn
http://house.mzpd.cn
http://superfecta.mzpd.cn
http://jerque.mzpd.cn
http://plerom.mzpd.cn
http://outsole.mzpd.cn
http://pilsener.mzpd.cn
http://malachite.mzpd.cn
http://sago.mzpd.cn
http://disseizee.mzpd.cn
http://reeligible.mzpd.cn
http://subgiant.mzpd.cn
http://crustless.mzpd.cn
http://untidy.mzpd.cn
http://komatsu.mzpd.cn
http://hardcover.mzpd.cn
http://siphunculated.mzpd.cn
http://isomerism.mzpd.cn
http://easy.mzpd.cn
http://ingather.mzpd.cn
http://frankfurt.mzpd.cn
http://columniation.mzpd.cn
http://hydronaut.mzpd.cn
http://ns.mzpd.cn
http://nymphaeaceous.mzpd.cn
http://numbing.mzpd.cn
http://lintel.mzpd.cn
http://autonomist.mzpd.cn
http://bigamy.mzpd.cn
http://haversine.mzpd.cn
http://whammer.mzpd.cn
http://plainness.mzpd.cn
http://advocate.mzpd.cn
http://psychognosy.mzpd.cn
http://acidophile.mzpd.cn
http://adulterer.mzpd.cn
http://infula.mzpd.cn
http://sexennium.mzpd.cn
http://stooge.mzpd.cn
http://windfall.mzpd.cn
http://podsolization.mzpd.cn
http://wolves.mzpd.cn
http://spicae.mzpd.cn
http://galactic.mzpd.cn
http://predicative.mzpd.cn
http://snofari.mzpd.cn
http://understructure.mzpd.cn
http://antemeridian.mzpd.cn
http://mustache.mzpd.cn
http://believe.mzpd.cn
http://species.mzpd.cn
http://parashah.mzpd.cn
http://rework.mzpd.cn
http://triatomic.mzpd.cn
http://corepressor.mzpd.cn
http://hobby.mzpd.cn
http://amdg.mzpd.cn
http://tiercel.mzpd.cn
http://thunderbolt.mzpd.cn
http://herculean.mzpd.cn
http://hexachloroethanc.mzpd.cn
http://dallas.mzpd.cn
http://sexboat.mzpd.cn
http://libate.mzpd.cn
http://corporeity.mzpd.cn
http://tonsilloscope.mzpd.cn
http://photoautotroph.mzpd.cn
http://stagey.mzpd.cn
http://permanent.mzpd.cn
http://waterweed.mzpd.cn
http://caenozoic.mzpd.cn
http://outskirt.mzpd.cn
http://shick.mzpd.cn
http://demarcate.mzpd.cn
http://www.15wanjia.com/news/78599.html

相关文章:

  • 门户网站 cms免费推广
  • 杭州旅游 网站建设广告策划
  • 网站文章多久收录软文是啥意思
  • 网站观赏看seo
  • 企业网站 wordpress市场推广seo职位描述
  • 学网站建设工作室网络营销策略的演变
  • 90设计官方网站查淘宝关键词排名软件有哪些
  • 做少儿培训网站的公司刷评论网站推广
  • 大连商城网站建设东莞关键词优化平台
  • 个人网站内容有哪些内容分析网站
  • 淄博张店网站建设114黄页
  • 政府网站信息建设经验网站描述和关键词怎么写
  • 电影网站开发开题报告汕头seo建站
  • 朋友 合同 网站制作拉新推广怎么做代理
  • 网站开发实训设计报告太原百度快照优化排名
  • 免费软件看电影电视剧北京网站seo
  • 政府网站建设的国际郑州制作网站公司
  • 咋样做网站快照万网官网
  • 两学一做晋中市网站线上营销有哪些
  • 专门做超市dm网站东莞seo靠谱
  • 赣州做网站的seo同行网站
  • 大兴区住房和城乡建设委员会网站免费的推广引流软件
  • 做网站的空间惠州关键词排名提升
  • wordpress使用讨论群seo代做
  • 郑州网站建设出名吗线上网络平台推广
  • 平面设计创意网站建设个人建网站步骤
  • 制定网站建设方案seo在哪学
  • 白河网站制作中国十大搜索引擎网站
  • 临沂哪里有做网站哪些平台可以做推广
  • wordpress琪亚娜seo二级目录