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。

相关推荐
玫瑰花开一片一片2 分钟前
Flutter IOS 真机 Widget 错误。Widget 安装后系统中没有
flutter·ios·widget·ios widget
时间之城12 分钟前
笔记:记一次使用EasyExcel重写convertToExcelData方法无法读取@ExcelDictFormat注解的问题(已解决)
java·spring boot·笔记·spring·excel
灏瀚星空21 分钟前
用Obsidian四个插件打造小说故事关联管理系统:从模板到图谱的全流程实践
经验分享·笔记·开源
一只可爱的小猴子36 分钟前
2022李宏毅老师机器学习课程笔记
人工智能·笔记·机器学习
孞㐑¥1 小时前
C++11介绍
开发语言·c++·经验分享·笔记
使一颗心免于哀伤1 小时前
《重构》笔记摘录 - 9.处理继承关系
笔记
再睡一夏就好1 小时前
Linux常见工具如yum、vim、gcc、gdb的基本使用,以及编译过程和动静态链接的区别
linux·服务器·c语言·c++·笔记
hepherd2 小时前
Flutter 环境搭建 (Android)
android·flutter·visual studio code
俺的图图呢?2 小时前
Django笔记——CSRF
笔记·django·csrf
我的golang之路果然有问题2 小时前
快速了解redis,个人笔记
数据库·经验分享·redis·笔记·学习·缓存·内存