Flutter之踩坑指南

Posted by Heber on November 14, 2018

简介

本篇文章将用于记录我在flutter开发学习中踩过的大大小小的坑,坑的类型呢,主要分为环境上的坑和代码上的坑。

环境篇

1.flutter upgrade 报错

flutter upgrade 是在控制台中执行的命令,作用是更新flutter sdk。以往我一直用这命令升级flutter也没出过什么问题,但是,今天我用它升级至v0.10.4的时候遇到一个报错。

error: Your local changes to the following files would be
overwritten by merge:
        packages/flutter_tools/gradle/flutter.gradle
Please commit your changes or stash them before you merge.

Aborting

大意是文件冲突了吧,要我们先解决冲突才能更新。首先,问度娘,无果。然后,问谷歌,在github的flutter官方版块找到这个话题,其中的8赞(最高)回答说他是先执行这个

git stash save –keep-index 然后再执行这个 git stash drop 然后再更新 flutter upgrade 就Ojbk了,好的我试了一下,无效。突然我发现,这个路径有点眼熟,找到对应文件一看。好嘛,前段时间动过的,大概知道怎么回事了。前段时间试跑官方gallary项目的时候报一个gradle相关的错误,百度之后找到一个解决办法,其中就需要修改这个文件,原样改回来之后再flutter upgrade就成功了。

代码篇

flutter RefreshIndicator无法下拉刷新的问题

当条目过少时listview某些嵌套情况下可能不会滚动(条目多时,超出一个屏幕,不会出现此问题),RefreshIndicator是根据下拉偏移量触发onRefresh操作,不能滚动自然不能下拉刷新。在滚动容器如LIstview、SingleChildScroll中添加physice属性赋值new AlwaysScrollableScrollPhysics(),保持listview任何情况都能滚动,问题解决。

编译篇

1.IOS:flutter run –release 死机

换到flutter channel master && flutter upgrade -v

2.Android:如果还在使用gradle 4.1可能会出现build apk失败

新建一个空的flutter项目,把其中的gradle 4.4拷过来覆盖现有的4.1

3.Android:couldn’t find “libflutter.so

打包成功后,在小米3上安装并运行成功,但是在小米Mix 2s上运行时闪退,连上android studio查看日志报一个 couldn’t find “libflutter.so的错误,百度无果。google后发现在flutter的官方github中不少人遇到了这个问题,貌似是手机cpu位数的问题,使用下面这句代码强转成64,就可以在Mix 2s上正常运行了,可是米3上出现了闪退情况,目前没找到解决办法。

flutter build apk --release --target-platform=android-arm64