问题1
VSCode在安卓模拟器或者真机上调试问题
问题
运行flutter,安卓模拟器连接成功,但是一直卡“ Running Gradle task 'assembleDebug' ”!
原因
运行Android项目会加载build.gradle,下载相关的依赖库,但谷歌默认提供的下载方式在国内非常慢,导致一直卡在初始化这里,无法调试。
解决
找到android根目录下的build.gradle文件,修改一下下载的方式,如下:
buildscript {
repositories {
// google()
// jcenter()
/* 添加下面的代码 */
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
maven {url 'http://download.flutter.io'}
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
}
}
allprojects {
repositories {
// google()
// jcenter()
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
maven {url 'http://download.flutter.io'}
}
}
还有一个地方需要修改,找到Flutter的安装目录(就是当初下载flutter时你存放的位置),文件路径如下:
/flutter/packages/flutter_tools/gradle/flutter.gradle
打开flutter.gradle文件修改下载依赖地址,如下:
buildscript {
repositories {
// google()
// jcenter()
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
}
}
保存后,再次运行就可以运行成功了!
问题2
Looking up a deactivated widget's ancestor is unsafe
问题
在某些安卓手机上,若有弹框相关的功能,在运行到关闭弹框代码时,会报错并且一直卡在弹框显示中!但在iOS上和某些安卓机上没问题,在安卓模拟器上也没有问题。
原因
如果在showModalBottomSheet里面又有showDialog弹框,在showModalBottomSheet底部弹框pop(context)后,showModalBottomSheet的context已经销毁了,若showDialog再调用pop(context),会找不到context导致项目奔溃报错。
应该会有其他场景也会报这个错误,问题原因应该也是这个。
解决
在关闭showDialog的弹框时,使用pop(this.context)就没问题了。使用this.context应该是始终能找到当前showDialog的context,这样就不用担心调用到已经被销毁了的context,导致报错。
最后
好了,今天在开发过程中遇到的问题就这些,如以上内容有错误,请不吝指正!
参考文档
https://www.jianshu.com/p/a1775cf9f3c3
https://blog.csdn.net/qq_40020447/article/details/105719696