一 前言

使用flutter使用混合开发可以在android 和 ios 下只需要开发一套代码就可以运行了,真的很方便,但是我们平常使用的时候都是有界面的情况下开发flutter.那么有一种情况是,如果我只是在原生的界面,但是又想只用一套代码就可以处理ios或者android的逻辑,并且没有flutter界面,这个时候需要有一种方式可以让dart在后台执行代码,比如相同的网络请求,不需要在ios或者Android又要实现两边,不知道如何处理,网上搜了下也没有,后来得知一种情况可以,链接如下:https://flutter.dev/docs/development/packages-and-plugins/background-processes
该链接下使用的样例github为https://github.com/bkonyi/FlutterGeofencing.git

二 FlutterGeofencing主要后台处理逻辑

将FlutterGeofencing下载下来跑了之后,里面有一些额外的代码,但是我们主要想要的代码是后台执行的逻辑
主要看几个地方
GeofencingService类当中的startGeofencingService方法

看到这段代码,大概知道其实就是创建了一个没有界面的FlutterNativeView,然后通过这个NativeView去创建MethodHandler,
通道方法plugins.flutter.io/geofencing_plugin_background
相对应处理的方法在callback_dispatcher.dart文件中

mBackgroundChannel调用的方法最终会在这里回调,这里是我自己写的测试方法,将原来的一些代码注释了

在上面startGeofencingService方法中有一个需要注意的是看到需要有一个callbackHandle对象,该对象为一个int值,该值的获取在main.dart文件中的initPlatformState方法最终调用了GeofencingManager.initialize()里面通过该GeofencingPlugin.initializeService通道方法的callback.toRawHandle()方法获取一个值存储到本地,然后在原生代码处再获取
callback的获取是通过PluginUtilities.getCallbackHandle去获取

三 Demo处理


github:https://github.com/MugWorld/ExecutingDartInTheBackground

附言

参考:https://github.com/bkonyi/FlutterGeofencing.git
https://flutter.dev/docs/development/packages-and-plugins/background-processes

010-flutter dart代码后台执行,没有界面的情况下相关推荐

  1. 如何修改移动终端的wifi(在忘记后台username和password的情况下)

    这几天回家,家里的wifi被小朋友们共享了,本来也没什么,毕竟我晚上10点后才对网有很大的需求,现在就比较恐怖了,10点钟之后小朋友对wifi的需求不减反增了.于是我恼怒的要改wifi密码了! 首先这 ...

  2. IOS 后台执行 播放音乐

    iOS 4開始引入的multitask.我们能够实现像ipod程序那样在后台播放音频了. 假设音频操作是用苹果官方的AVFoundation.framework实现.像用AvAudioPlayer.A ...

  3. 前端百题斩【010】——通俗易懂的JavaScript执行上下文

    写该系列文章的初衷是"让每位前端工程师掌握高频知识点,为工作助力".这是前端百题斩的第10斩,希望朋友们关注公众号"执鸢者",用知识武装自己的头脑. JavaS ...

  4. 【Flutter】Flutter 混合开发 ( Dart 代码调试 | Flutter 单独调试 | 混合模式下 Flutter 调试 )

    文章目录 前言 一.单独运行 Flutter 代码时调试 Dart 代码 二.混合模式下 Flutter 调试 Dart 代码 三.相关资源 前言 Flutter 混合开发集成步骤 : ① 在 And ...

  5. flutter/dart通过ffi调用rust代码

    ffi简介 FFI(Foreign Function Interface)是用来与其它语言交互的接口,在有些语言里面称为语言绑定(language bindings),Java 里面一般称为 JNI( ...

  6. SAP LSMW 事务代码HUPAST的录屏后台执行报错 - Runtime error RAISE_EXCEPTION has occurred - 之分析

    SAP LSMW 事务代码HUPAST的录屏后台执行报错 - Runtime error RAISE_EXCEPTION has occurred - 之分析 因项目上成品库存管理启用了handlin ...

  7. flutter offset_Flutter 仿微信界面聊天室 | 基于 (Flutter+Dart) 聊天实例

    1.项目介绍 Flutter是目前比较流行的跨平台开发技术,凭借其出色的性能获得很多前端技术爱好者的关注,比如阿里闲鱼,美团,腾讯等大公司都在投入相关案例生产使用.flutter_chatroom项目 ...

  8. Flutter 代码混淆 混淆Dart代码

    Flutter的代码混淆 flutter的代码混淆就是混淆dart代码.代码混淆是修改应用程序二进制文件的过程,以使人们更难以理解.混淆将函数名和类名隐藏在已编译的Dart代码中,从而使攻击者很难对您 ...

  9. flutter图片聊天泡泡_基于 Flutter+Dart 聊天实例 | Flutter 仿微信界面聊天室

    1.项目介绍 Flutter是目前比较流行的跨平台开发技术,凭借其出色的性能获得很多前端技术爱好者的关注,比如阿里闲鱼,美团,腾讯等大公司都有投入相关案例生产使用. flutter_chatroom项 ...

  10. Python爬虫之selenium对标签页切换、切换frame标签、cookie处理、执行js代码、开启无界面、以及使用代理ip和替换user-agent等方法

    一.selenium对标签页切换.切换frame标签.cookie处理.执行js代码.开启无界面.以及使用代理ip和替换user-agent等方法 (一).selenium标签页的切换 当seleni ...

最新文章

  1. 自定义ik分词加载无效的问题分析
  2. labview实例_手把手以实例教你学LabVIEW编程,事件结构框架
  3. Exynos4412 所用外存 —— eMMC
  4. Fast Paxos
  5. radiobuttonlist 后面追加操作按钮_【进口知识】通关无纸化签约及代理报关委托收发操作指南...
  6. ROS安装与报错记录
  7. 计算机科学与技术的应用图,安徽农业大学计算机科学与技术视图及其应用.ppt...
  8. php curl加密获取数据,PHP利用Curl模拟登录并获取数据例子
  9. java webservice用户验证_java webservice 用户验证 (服务端 + 客户端)
  10. 坐火车卧铺,到底是上、中、下哪个好?其实简单对比一下就知道了
  11. python excel数据分析师培训_从零开始学可视化数据分析师就业课程(Excel、 MySQL、Power BI、Tableau、python、R)...
  12. linux latex编译器,在Ubuntu系统中下载安装LaTeX编辑器TeXstudio的方法
  13. 浅析游戏音乐的风格特点—欧美风
  14. 符合python语言变量命名规则_符的解释|符的意思|汉典“符”字的基本解释
  15. 使用navicat导入SQL语句的教程
  16. jackson 入门
  17. 计算机专业考研复试(前沿知识篇)
  18. 产品经理总结——空肥皂盒
  19. 手机PUK码和PIN码知识及其查询方式
  20. php虚拟主机搭建微信公众号服务器

热门文章

  1. 预约洗车/美容/维修/家政/保养/上门洗车预约小程序源码及管理系统
  2. html 多余的字省略号,html中把多余文字转化为省略号
  3. Android开发-高德地图导航
  4. matlab画图不想显示x轴数据,Matlab - 情节; 修改X轴值而不修改图形
  5. Python代码实现将png格式图片批量转换为jpg个格式
  6. 儿时的小游戏:象狮虎豹狼狗猫鼠
  7. YIT-CTF—Web
  8. 复杂美吴思进出席浙江公共政策研究院“数字赋能与浙江智造”沙龙
  9. 未来的计算机将是半导体,硅的未来岌岌可危?未来计算机或迎来钻石芯
  10. 关于boa+cgi上传文件大小的问题