Flutter常见问题
facebook等海外资源, 使用pod获取时如果有自己的私有库,翻墙后二者不可得兼时, 可以先去.cocoapods中删除私有库(后者压缩之后保存, 待海外包拉取完毕之后再放进去)
Flutter报错之Waiting for another flutter command to release the startup lock
-
打开
flutter
安装目录/bin/cache
, 如果找不到执行 ` where flutter` 命令 -
flutter sdk的目录下面的
bin/cache
-
删除
lockfile
文件
若删除不掉,需要在进程管理器中停止 dart.exe的进程,然后再次尝试进行删除
此时可在命令行再执行flutter相关命令,完美解决
运行Flutter项目执行pod install:
1 |
|
解决办法: 打开iOS目录下的Podfile,删除掉use_frameworks! 重新build即可。
类型转换是报错: flutter type ‘_InternalLinkedHashMap<Object?, Object?>’ is not a subtype of
flutter工程跑安卓时指定java路径(注意mac和windows路径不一样, 所以不方便git管理)
在gradle.properties文件中指定:
1 |
|
flutter工程跑android报错:
Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
解决办法:https://blog.csdn.net/vitaviva/article/details/116080977
flutter编译报错如下:
Unhandled Exception: FormatException: Unexpected extension byte (at offset 5)
解决办法:
- 多编译几次, 如果不行执行
- 如果步骤1不管用,
flutter clean
然后再执行步骤1 - 如果步骤2不行, 执行
flutter pub cache clean;flutter pub get;
,然后再执行步骤1
flutter编译报错如下:
1 |
|
解决办法如下:
注释如下代码:
1 |
|
添加如下代码:
1 |
|
原生的界面在flutter上显示会自动添加一个黑色的线框
多个可滑动的tab组成页面时,并且都带下拉刷新,使用mvp模式开发, 切换页面卡顿
在切换动画过程中,页面乜有完全显示之前会触发页面的build方法, 如果此时存在网络请求,并且网络请求在页面还没有完全展示(切花到一半)时已经返回,再次出发了页面的重构,那么会造成页面卡顿解决方法有二:
解决方法一: 等页面完全展示之后发动网络请求
解决方法二:延时网络请求
flutter键盘无法顶起输入框(遮挡输入框)
嵌套在scafford组件中
setState() or markNeedsBuild() called during build.
原因是因为控件还没有构建完毕,
解决方案一: 如果你想在initState的时候调用这个组件,那么就需要等父组件创建完成后再去创建小组件, 官方提供了一个组件创建完成的回调通知方法
1 |
|
解决方案二: 延时加载即可解决问题
setState() called after dispose()
网络请求成功前退出了页面,该 State 被从对象树卸载掉,而这时回调了网络请求的方法,方法中带有 setState 的调用,也就导致了该问题。
问题原因
State 对象被从对象数卸载释放之后再次调用 setState 就会报 setState() called after dispose()。
解决方案
1 |
|
Flutter侧边返回手势事件监听
使用WillPopScope包裹一下即可,点击导航栏返回按钮和侧滑手势都会走到onWillPop回调里面去, 代码如下:
1 |
|
flutter和原生交互时flutter传递给原生的回调只能执行一次(这是flutter的机制)
1 |
|
1. Flutter Text 文字下有黄色下划线
导致原因
导致这种情况发生的原因是因为,Text widget 隶属于Material 风格下的组件,如果根节点不是Material 相关组件,则会使用默认带黄色下划线的格式。如果根节点是Material 容器组件,则会采用其Material风格的样式(即不带有下换线)。
解决方式
- 采用根节点为脚手架Scaffold组件
Scaffold(body: content,);
- 采用根节点为Material 组件
Material(child: content);
- 逐个修改Text 组件的style 下的decoration为TextDecoration.none
1 |
|