在flutter开发过程中,发现Android手机在App首页点击物理返回按钮时,App会退出并且再次点开App时会重新启动,这代表了上次的退出直接杀死了App,和我们平常的退到手机桌面不同,所以开发了一个单独插件来处理这种情况。
使用步骤如下:
1、pubspecyaml文件中引入依赖
2、引用插件
3、使用插件来退出App到桌面,并且保持App后台运行
可根据实际情况在_onWillPop方法中处理相关逻辑,比如连续两次点击物理返回按钮才退出到桌面等。
个人背景:Flutter两年,原iOS开发
项目相关信息:
Flutter SDK 2_8_0
compileSdkVersion 29
extkotlin_version ='1350'
第一次写文章,没有准备,直接上问题
app/buildgradle中一直用的是 compileSdkVersion 29,某天手贱 *** 作了flutter clean,遂产生图示中的问题。
翻阅了很多文章,基本的两种解决方法如下:
1、更改compileSdkVersion 为 31,后面可能需要把 Flutter 的 SDK 改成 2_8_1, 进而需要在 android/buildgradle 中把 kotlin 版本从 1350 改成 1531; 这样改变之后有些小伙伴就能运行了,但我这里不行,因为项目已经运行一年多了,里面安装了大量的三方插件,各种以来繁多,所以这样 *** 作后出现了jar包冲突;最后被我pass掉了
2、app/buildgradle 中写入相关配置,如下图这种
以上两种方法对我的项目都不好使,相信有些小伙伴也是如此,那么我们就要看具体原因是什么了,这个问题对安卓小伙伴可能略显小儿科了,但是对于我这个iOS转过来的很不友好。
这个问题产生的原因究其根本就是引用的三方插件中存在一个或多个插件的compileSdkVersion大于我们项目中的compileSdkVersion,一般插件更新都是大版本改配置,小版本加需求改bug什么的,但是你们懂的 所以我们在继承三方插件的时候多使用了诸如这样的写法 permission_handler: ^830 这种写法指定了最小插件版本,例如permission_handler ^830,在我们pub get 的时候会加载 830 ~ 900 之间的最新版本,那么如果这个最新版本更改了compileSdkVersion且超过了我们项目中的数值,在编译的时候就会产生文章最开始显示的问题,这个时候我们需要做的就要先查到版本冲突的插件库,然后到 pubdev 中查看这个插件的 changelog (一般都会标明), 然后在引用的时候去掉^,将插件版本定死。
插件版本定死 ! 插件版本定死 ! 插件版本定死 ! (重要的事情说三遍~)
按照我的方法来做,基本就能解决这个问题了
PS:其实中间还遇到过其他问题,这里简单说
1、卡死在Running Gradle task 'assembleDebug' 解决方法:换源(阿里)
2、某些插件不更新(例如 tencent_live_fluttify-030),把插件down到本地,放心大胆的改,引用路径改成本地就行;
pubspecyaml 改后的大致样子(这是新项目的,老项目没贴图,插件太多太乱)
总结:稳定的才是最好的,别总想着更新,毕竟身为开发不能跟自己过不去
Flutter是Google开发的新一代跨平台方案,Flutter可以实现写一份代码同时运行在iOS和Android设备上,并且提供很好的性能体验。Flutter使用Dart作为开发语言,这是一门简洁、强类型的编程语言。Flutter对于iOS和Android设备,提供了两套视觉库,可以针对不同的平台有不同的展示效果。
Flutter原本是为了解决Web开发中的一些问题,而开发的一套精简版Web框架,拥有独立的渲染引擎和开发语言,但后来逐渐演变为移动端开发框架。正是由于Dart当初的定位是为了替代JS成为Web框架,所以Dart的语法更接近于JS语法。例如定义对象构建方法,以及实例化对象的方式等。
在Google刚推出Flutter时,其发展很缓慢,终于在18年发布第一个Bate版之后迎来了爆发性增长,发布第一个Release版时增长速度更快。可以从Github上Star数据看出来这个增长的过程。在19年最新的Flutter 12版本中,已经开放Web支持的Beta版。
Flutter不仅仅提供了一套视觉库,在Flutter整体框架中包含各个层级阶段的库。例如实现一个游戏功能,上面一些游戏控件可以用上层视觉库,底层游戏可以直接基于Flutter的底层库进行开发,而不需要调用原生应用的底层库。Flutter的底层库是基于Open GL实现的,所以Open GL可以做的Flutter都可以。
这是他提的 : >
在flutter中使用notifacation,目前可以使用官方的插件 Flutter Local Notifications Plugin 来实现。
在pubspecyaml中添加
使用该插件的思路大致为:在android中设置权限管理——引入依赖——初始化。
安卓权限管理设置
引入依赖
接下来就可以在项目中初始化使用了,首先在initState()中初始化设置
以上就是关于Flutter开发之Android物理按键返回全部的内容,包括:Flutter开发之Android物理按键返回、The minCompileSdk (31) specified in a dependency ...、为什么说移动端的未来是Flutter等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)