Flutter 开发中踩坑笔记总汇

Flutter 踩坑笔记总汇

本篇主要是收集汇总开发过程中遇到的小困惑,都是些比较常见的问题。后续开发中遇到,也会持续更新在这里。


1、Flutter Packages upgrade后任务进入阻塞状态

问题:无法更新下载插件库。

解决:配置flutter官方为中国搭建的镜像服务器,windows在环境变量中配置,配置好后重启Android Studio。 可参考:在中国网络环境下使用 Flutter | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter

复制代码
PUB_HOSTED_URL=https://pub.flutter-io.cn
FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

2、Flutter 多次点击闪电⚡️后,突然无法运行了

问题: 热更新太多次后,无法运行

解决:flutter缓存需要清理,命令输入:flutter clean

3、Flutter 项目无法检测到移动设备

问题:可以看见AndroidStudio已经链接到设备,但是无法运行安装

解决:Adb 版本低,在AS-IDE里的,选择AndroidSDk-SDK Tools更新升级

4、Packages get和upgrade的区别

Flutter中引用的所有库的信息都会在pubspec.lock文件中保存,包括版本号。

Packages get

调用Packages get后,会获取这个文件中所对应的版本号库。文件中没有对应库的信息,则会从服务器中获取对应的库,然后将信息写入这个文件中。

Packages upgrade

根据pubspec.yaml文件中所引用库的版本号,Flutter会从服务器获取最新的库,并更新到pubspec.lock文件中。

5、FlutterView显示黑屏卡顿问题

Flutter页面作为一个view添加到原生Activity中进行绘制,默认会出现黑色背景色,就会出现类似卡顿黑屏的现象。尝试了以下几种方案:

  1. 设置原生Activity主题:失败

我们知道,解决应用的启动黑屏卡顿时,我们都是通过在主题中设置window的背景,来替代窗口默认的黑色背景来解决。那么能不能解决Flutter的界面黑屏呢?

Kotlin 复制代码
<style name="FlutterTheme" parent="AppTheme">
        <item name="android:windowBackground">@color/transparent</item>
</style>

2.设置背景色 :失败

FlutterView是通过调用addview(View)添加原生layout布局中,那么我们是不是只要把它的背景色设置为白色或透明就行了呢?

Dart 复制代码
flutterView = new FlutterView(this);
flutterView.setBackgroundColor(this.getResources().getColor(R.color.white));
flContainer.addView(flutterView, LayoutParams);
  1. 监听View绘制的第一帧:成功

先将FlutterView设置为隐藏,然后监听View绘制的第一帧,会回调一个 onFlutterUiDisplayed() 方法,在这个方法里将FlutterView由隐藏状态设置为显示。

java 复制代码
flutterView = new FlutterView(this);
flutterView.setVisibility(View.INVISIBLE);
flutterView.addOnFirstFrameRenderedListener(new FlutterUiDisplayListener() {
       @Override
       public void onFlutterUiDisplayed() {
           flutterView.setVisibility(View.VISIBLE);
       }
});

6、 FlutterActivity显示白屏问题

**FlutterEngine引擎 :**它负责执行Dart代码,将Flutter编写的UI显示到FlutterView或FlutterActivity或FlutterFragment中。创建好了一个FlutterEngine对象,我们可以通过代码指定初始路由名称。

另外,每个FlutterEngine对象在显示出Flutter UI之前是需要一个warm-up准备 期的,导致屏幕呈现短暂的空白。

解决方式就是预先创建并启动FlutterEngine,完成warm-up过程,然后将这个FlutterEngine缓存起来,之后使用这个FlutterEngine来显示出Flutter UI。

相关推荐
Olrookie27 分钟前
若依前后端分离版学习笔记(二十)——实现滑块验证码(vue3)
java·前端·笔记·后端·学习·vue·ruoyi
请你喝好果汁64137 分钟前
Conda_bashrc 初始化机制学习笔记
笔记·学习·conda
_李小白2 小时前
【Android Gradle学习笔记】第八天:NDK的使用
android·笔记·学习
wahkim2 小时前
移动端开发工具集锦
flutter·ios·android studio·swift
摇滚侠2 小时前
Spring Boot 3零基础教程,WEB 开发 自定义静态资源目录 笔记31
spring boot·笔记·后端·spring
摇滚侠2 小时前
Spring Boot 3零基础教程,WEB 开发 Thymeleaf 遍历 笔记40
spring boot·笔记·thymeleaf
傅里叶2 小时前
Flutter / Dart 多包管理工具 —— Melos 使用指南
flutter
Chloeis Syntax3 小时前
接10月12日---队列笔记
java·数据结构·笔记·队列
QT 小鲜肉3 小时前
【个人成长笔记】Qt 中 SkipEmptyParts 编译错误解决方案及版本兼容性指南
数据库·c++·笔记·qt·学习·学习方法
西西学代码4 小时前
Flutter---生命周期
flutter