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

网站程序开发公司南宁seo公司哪家好

网站程序开发公司,南宁seo公司哪家好,广西建设工程质量检测试验协会网站,wordpress css 图片路径flutter插件开发是一个重要的技能,拓展flutter与原生的通信,将一些公用的东西封装,给不同的项目使用。 阅读前置: flutter基本通道调用 objective-c基础语法 ios项目基础知识 目录 1、创建一个插件项目2、项目结构3、编写原生代码…

flutter插件开发是一个重要的技能,拓展flutter与原生的通信,将一些公用的东西封装,给不同的项目使用。
阅读前置:
flutter基本通道调用
objective-c基础语法
ios项目基础知识

目录

  • 1、创建一个插件项目
  • 2、项目结构
  • 3、编写原生代码
  • 4、编写flutter端测试代码

1、创建一个插件项目

创建一个ios原生的插件项目,指定平台为ios,语言为objective-c,也可以是android平台等等。

flutter create -t plugin --platforms=ios --ios-language=objc add_helper

2、项目结构

example是该项目内置的一个帮助测试我们开发的插件代码的dart项目
在这里插入图片描述
从pubspec.yaml文件中可看出,依赖的就是即将开发的插件项目
在这里插入图片描述
lib中有三个文件

  • add_helper.dart
  • add_helper_method_channel.dart
  • add_helper_platform_interface.dart
    这三个文件应该倒着理解,看一下interface里面,这就是一个抽象的通道平台接口,里面定义与原生通道的方法,里面就内置了一个官方的例子,获取平台版本号的方法抽象。
Future<String?> getPlatformVersion() {throw UnimplementedError('platformVersion() has not been implemented.');}///添加一个自定义的方法 
Future<int?> add(int a, int b) {throw UnimplementedError('add() has not been implemented.');}

可以添加自定义的方法,测试文件可能会报错,点进去暴力注释掉就行,method_channel就是platform_interface的实现

@overrideFuture<String?> getPlatformVersion() async {final version = await methodChannel.invokeMethod<String>('getPlatformVersion');return version;}@overrideFuture<int?> add(int a, int b) async {final result = await methodChannel.invokeMethod<int>('add', <String, int>{'a': a,'b': b,});return result;}

最后这些方法在第一个文件统一通过一个类再封装方法给需要用到的地方的调用。

class AddHelper {Future<String?> getPlatformVersion() {return AddHelperPlatform.instance.getPlatformVersion();}Future<int?> add(int a, int b) {return AddHelperPlatform.instance.add(a, b);}
}

3、编写原生代码

在这里插入图片描述
因为我们生成的是oc代码,所以这里是这样子的,接下来需要初始化ios项目,进入example,执行

flutter build ios

成功后,打开xcode,打开example下的ios,既然是编写原生插件,就在原生项目中进行开发,插件的代码是被集成在了pod里面的,可以看到,位置很深
在这里插入图片描述
添加原生处理代码,只需要在获取版本的方法后面加一个case就行

- (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {if ([@"getPlatformVersion" isEqualToString:call.method]) {result([@"iOS " stringByAppendingString:[[UIDevice currentDevice] systemVersion]]);} else if ([@"add" isEqualToString:call.method]) {int a = [call.arguments[@"a"] intValue];int b = [call.arguments[@"b"] intValue];result(@(a + b));} else {result(FlutterMethodNotImplemented);}
}

4、编写flutter端测试代码

回到android studio,/add_helper/example/lib/main.dart中编写

int totalCount = 0;
///
@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: const Text('Plugin example app'),),body: Center(child: Column(children: [Text('Running on: $_platformVersion\n'),ElevatedButton(onPressed: () async {int? val = await _addHelperPlugin.add(totalCount, 1);setState(() {totalCount = val ?? -1;});},child: Text('totalCount: $totalCount'),)],),),),);}

运行项目:
在这里插入图片描述
参考文档:
Flutter插件开发指南01: 通道Channel的编写与实现
Writing custom platform-specific code

http://www.hengruixuexiao.com/news/17459.html

相关文章:

  • 收集链接 做网站新闻热点最新事件
  • 如何用织梦做网站详细教程郑州网站建设制作
  • 设计公司的企业使命seo是什么职业做什么的
  • 自适应网站方案外贸推广哪个公司好
  • 网站建设推广特色上海网站营销seo电话
  • 安阳做网站的公司有哪些中山网站seo
  • 网站用什么做关键词seo排名优化有哪些
  • 做的好的区块链网站全球网络营销公司排名
  • 哪个网站做阿里首页模板关键词点击价格查询
  • 免费网站如何注册torrentkitty磁力官网
  • 最新聊天记录做图网站整站优化快速排名
  • 新疆网站建设制作报价方案怎样推广自己的店铺啊
  • 找人做的网站怎么seo排名官网
  • 好的网站建设价格什么平台发广告最有效
  • 百度站长平台网站体检网络推广是干什么的
  • 火狐网站开发好的插件网络推广合作协议范本
  • 重庆大渡口营销型网站建设公司推荐国产免费crm系统有哪些
  • 宁波正规品牌网站设计最新国际消息
  • 做彩页素材的网站看到招聘游戏推广员千万别去
  • 如何查网站域名备案谷歌seo网站推广
  • html5高端酒水饮料企业网站模版seo关键词排名优化推荐
  • 河北城乡建设厅网站北京网站seo优化推广
  • 基本网站建设知识免费行情软件网站下载
  • 静态网站与动态网站区别设计师培训班多少钱
  • 企业管理系统项目简介怎么写网站快速排名优化
  • 知名企业网站搭建品牌cps推广联盟
  • 乐清市城乡建设局网站绍兴seo网站管理
  • 如何检测网站是否安全杭州seo网站排名
  • 广州网站开发报价百度搜索排行seo
  • 新闻cms静态网站模板抖音信息流广告怎么投放