实践小结

[toc]

为什么某些变量在flutter自定义类中被标记为final?

升级 Flutter

1、命令方式

2、自己下载替换方式

  • Flutter SDK 官网 下载对应的SDK
  • 替换掉你本地的
  • 关掉所有正在编辑Flutter的项目(如果没有关掉所有的,则会遇到如 @require等找不到的问题)
  • 重新pub get

Flutter出现List is not a subtype of type List解决方法

控制台错误如下:

1
2
type 'List<dynamic>' is not a subtype of type 'List<String>'
1

出现这个错误的原因是由于解析json的数据类型不一致导致

后台返回的一个json字段为:

1
2
3
4
5
6
List<String> imagesString = ['https://1.png', 'https://2.png'];
String imageParam = jsonEncode(imagesString);
print('imageParam = $imageParam');
//List<String> images = jsonDecode(imageParam); // 错误写法,会造成崩溃
List<String> images = jsonDecode(imageParam).cast<String>(); // 正确写法
print('转换完成');

解析json用到的model实体类,由于labelList是一个字符串集合数组,
需要在解析labelList字段时加上cast<String>()

1
List<String> labelList = json['labelList'].cast<String>();

二、问题

问题1:Flutter gpu_surface_gl

原因为:机型的gpu不匹配

Flutter gpu_surface_gl

如果你使用的是命令来运行flutter的话,那么在flutter run加参数就可以。即flutter run --enable-software-rendering

但是这个办法有个坑,就是热加载的时候要手动在命令行输入r(不是说好的自动的么,也许是我打开的方式不对);

如果不是用命令来运行的话,那解决步骤如下:

Flutter gpu_surface_gl问题

Flutter gpu_surface_gl问题3

–enable-software-rendering

问题2:resource android:attr/fontVariationSettings not found

解决方案:

try to change the compileSdkVersion to:

compileSdkVersion 28

-bash: dart: command not found

原因是下载Fluter SDK时,Dart SDK已经在捆绑Fluter里了,所以需要设置下Dart环境变量的路径:

①打开配置环境变量的文件: .bash_profile

1
open ~/.bash_profile

②配置Dart SDK所在路径

1
2
export DART_BIN=/Applications/flutter/bin/cache/dart-sdk/bin
export PATH=${PATH}:${DART_BIN}

③最后在终端里执行: source ~/.bash_profile 重新加载一下

1
source ~/.bash_profile

④此时,就可以用dart命令来执行你想要的操作了。比如

1
dart --version

Failed assertion: line 1687 pos 12: ‘hasSize’

原因:Column的子widget中包含ListView

Column的子widget中包含ListView