1 Target of URI doesn't exist 'package:flutter/material.dart'

官方下载的flutter中有一个example文件夹,里面有很多flutter的小demo,打开其中一个demo,执行运行的指令后,出现该错误。

错误原因是没有下载flutter依赖包,就像RN没有执行npm install 一样

解决方法:执行flutter packages get

2 flutter: command not found

flutter环境变量的配置

mac配置环境变量参考该网址https://jingyan.baidu.com/article/8065f87f47b29523312498e4.html

export PUB_HOSTED_URL=https://pub.flutter-io.cn

export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

export PATH="$PWD/flutter/bin:$PATH"

关闭终端,重新打开一次就可以了

具体可以参考https://flutter.dev/community/china

3 Error on line 45, column 4 of pubspec.yaml: Expected a key while parsing a block mapping

assets:
^

assets前面多了一个空格,删除就好了

4 More than one device connected; please specify a device with the '-d <deviceId>' flag, or use '-d all' to act on all devices.

ios和flutter混合开发,使用flutter attach可以调试flutter代码

但是运行flutter attach后并没有出现预期的效果,而是出现了

More than one device connected; please specify a device with the '-d <deviceId>' flag, or use '-d all' to act on all devices.

“xxx”的 iPhone • b13a6cf6ca28106dcbd0d6273c205d0fec8583aa • ios • iOS 12.1.2

iPhone X      • 108E3AF0-CFF1-4069-8989-0CF95B2EAD31     • ios • iOS 12.1 (simulator)

当时就仔细看第一行是啥意思,又上网查资料浪费的好长时间,感觉是个好低级的错误。

其实就是同时连接了2个设备,运行flutter attach -d <deviceId>选择其中一个就可以了,

或者断开一个设备,只连接一个设备就好了

5 A RenderFlex overflowed by 240 pixels on the right

渲染的部分超出屏幕右侧的宽度了

解决外层包裹一个可以滑动的widget,例如SingleChildScrollView,

因为我是水平方向超出了,所以还需要加上

scrollDirection: Axis.horizontal,
 
6 ListView运行时, 报错Vertical viewport was given unbounded height
解决
可以通过指定shrinkWrap = true为了你ListView
ListView(
shrinkWrap: true,
children...
)

可参考: https://cloud.tencent.com/developer/ask/138715

7 ScrollView嵌套ListView滚动冲突

解决: ListView添加physics:NeverScrollableScrollPhysics(),禁用ListView的滚动。

 
8 使用Android Studio调试项目
我们点击AS状态栏的flutter attach可以调试我们的项目(打断点,看变量等),当进入flutter页面时,需要等一段时间才能连接上我的的手机或模拟器,而网络请求部分在等待时间就请求完了,没有进入断点。
解决:在网络请求前加一个延时(

await Future.delayed(Duration(seconds: 6,));

),这样可以保证连接成功前还没有运行到我们的断电,成功后正常进入断点。

 
9 The element type 'Type' can't be assigned to the list type 'Widget'
body: TabBarView(
controller: model._tabController,
children: <Widget>[
Content,
Content
]
) class Content extends StatelessWidget{ @override
Widget build(BuildContext context) {
return Center(child: Text("测试"),);
} }

解决: 调用时加上小括号,将Content改成Content()就可以了

10 dart中map方法获取index

参考: https://cloud.tencent.com/developer/ask/207919/answer/321886

List arr = ["a", "b", "c"];
List.asMap().map((index, item)=> MapEntry(index,Text(item)
)).values.toList()

11 当电脑删除原来的flutter sdk,然后在官网上下载最新的flutter版本后,建议重新更新环境变量,否则会有问题

12. 关于GestureDetector中onTap点击事件对空白处点击不相应的bug

GestureDetector(
child: Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
Text("左"),
Text("右")
],
),
),
onTap: () {
print("点击了Container");
},
);

如上代码所示,当点击文字“左”“右”时会触发点击时间,点击其他地方并不会触发点击事件,如果想点击其他空白处也触发点击事件,可以在Contaier加一个color属性,如下代码所示

GestureDetector(
child: Container(
color: Colors.transparent,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
Text("左"),
Text("右")
],
),
),
onTap: () {
print("点击了Container");
},
);

13 由于本地flutter环境与服务器打包flutter环境不一致导致连续点击2次flutter页面崩溃的问题

原来使用的flutter版本为1.2.1,之后升级了flutter版本到1.5.4,对应pubspec.lock中对应的依赖版本有变化

只是本地升级,服务器环境没有升级,所以打包时环境不对,出现了连续点击2次flutter页面导致崩溃,

升级服务器的flutter环境后,问题解决

14 pageView放在stack里,而此时stack是column的子组件,容易出错,将放置顺序调整为column放在stack里面,pageView放在column中没有问题

需要主要stack和colum的放置顺序

15  Unhandled Exception: 'package:flutter/src/widgets/scroll_controller.dart': Failed assertion: line 110 pos 12: '_positions.isNotEmpty': ScrollController not attached to any scroll views.

这个问题找解决方案找了很长时间

终于在这个网站https://stackoverflow.com/questions/52296387/scrollcontroller-jumpto-scrollcontroller-not-attached-to-any-scroll-views看到解决的要点

问题是出在

_pageController.animateToPage(
_index,
duration: changeTimeOut,
curve: Curves.linear
);

我使用了上面的代码,但是此时_pageController是没有的(向上滑动后这部分UI不显示了,所以flutter就不渲染了,我理解_pageController也就不存在了),所以报错了。

解决方案是加一个判断,等向上滑动后UI不显示了,就不执行这部分代码就好了

上面那个网站给出了是 if (_scrollController.hasClients){}

对应我的代码的解决方案是if (_scrollController.offset < 200) {上面的代码}

16 输入flutter attach时出现以下提示

Waiting for another flutter command to release the startup lock...

解决:

此时需要打开 flutter/bin/cache/lockfile,删除就行了

参考:https://www.jianshu.com/p/7507d087e9f1

17 更新flutter版本1.7.8+hotfix.3后出现以下错误

Error: The argument type 'Null Function(ImageInfo, bool)' can't be assigned to the parameter type 'ImageStreamListener'.

解决方法:

将出现错误的地方

_imageStream.addListener(_handleImageLoaded);

改成

_imageStream.addListener(ImageStreamListener(_handleImageLoaded));

18 [FATAL:flutter/third_party/txt/src/minikin/FontCollection.cpp(95)] nTypefaces == 0

[ERROR:flutter/third_party/txt/src/minikin/FontFamily.cpp(184)] Could not get cmap table size!

原因是引用的字体或者图标不存在

19 [FATAL:flutter/runtime/dart_vm.cc(380)] Error while initializing the Dart VM: Wrong full snapshot version, expected '1d7acad1540192ac459cf60344efb7c1' found 'c8562f0ee0ebc38ba217c7955956d1cb'

问题发生于升级flutter sdk之后,看上边的日志Wrong full snapshot version可以猜测:升级了sdk,但是之前已生成的编译产物还是旧的,不匹配,需要重新build一下

1) removing the content of flutter/bin/cache
2) thenrunning flutter upgrade again
3) thenrunning flutter clean prior to flutter run
参考 https://juejin.im/post/5d1c596d6fb9a07ee742fa59
 
20 flutter升级到1.9.1 后 ios打包失败 Flutter.framework: Permission denied
 
这是flutter官方的一个bug,查资料说flutter升级到1.10就好了
不升级flutter的情况下,可以改Flutter SDK 的一个文件,flutter/packages/flutter_tools/bin/xcode_backend.sh
144行

RunCommand find "${derived_dir}/engine/Flutter.framework" -type f -exec chmod a-w "{}" \;

=>

RunCommand find "${derived_dir}/engine/Flutter.framework" -type f -iname '.h' -exec chmod a-w "{}" \;

Flutter走过的坑(持续更新)的更多相关文章

  1. 移动端H5制作安卓和IOS的坑 持续更新...

    移动端H5制作安卓和IOS的坑 持续更新... 前言:最近参加公司的H5页面创意竞赛,又遇到不少页面在不同系统上的坑.踩坑之余,觉得很多之前遇到的知识点都忘了,索性开一篇博文,把这些坑都统一归纳起来, ...

  2. 微信小程序的坑(持续更新中)

    参与微信小程序开发有一段时间了,先后完成信息查询类和交易类的两个不同性质的小程序产品的开发:期间遇到各种各样的小程序开发的坑,有的是小程序基础功能不断改进完善而需要业务持续的适配,有的是小程序使用上的 ...

  3. Xcode7.2与iOS9之坑 (持续更新)

    GitHub地址 前几天升级OS X EI Capitan 10.11.1, 以及Xcode7.1,正好赶上公司新产品上线,要做iOS9的适配,遇到各种坑,各种查资料,随之记录总结一下遇到的坑. 先说 ...

  4. kubernetes 中遇见的一些坑(持续更新)

    一.官网镜像无法下载 解决方法:需要翻墙 配置docker翻墙机: cat /usr/lib/systemd/system/docker.service   [Service] Environment ...

  5. 【Go】开发中遇到的坑——持续更新

    关于CGo多语言编译 问题出现在将openCV封装到go语言的时候.在编译时需要设置 CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -o xxx mai ...

  6. Windows批处理命令学习中遇到的坑--持续更新中

    再次拾起windows批处理命令,下边将一些遇到的小问题写出来,希望可以帮到大家 1.set命令:set主要的作用是为变量赋值,类似于编程语言中的var i = Value:但是在使用的过程中一定要注 ...

  7. python中的“坑”—持续更新

    1.判断是否是回文 def is_back(s): ]==(s if s.strip() else False) print(is_back('上海自来水来自海上')) print(is_back(' ...

  8. WebView的坑[持续更新]

    返回错误的 innerHeight,如 240(WebView returns bad window.innerHeight) http://stackoverflow.com/questions/1 ...

  9. 【MySQL】各种小坑-持续更新

    中文乱码问题 在建表的时候额外执行 ALTER TABLE camera CONVERT TO CHARACTER SET utf8; 如果还是不行注意看一下precision,为2的时候容易出现?? ...

随机推荐

  1. YTU 2959: 代码填充--雨昕学矩阵

    2959: 代码填充--雨昕学矩阵 时间限制: 1 Sec  内存限制: 128 MB 提交: 112  解决: 50 题目描述 雨昕开始学矩阵了.矩阵数乘规则:一个数k乘一个矩阵A还是一个矩阵,行数 ...

  2. 【Selenium】HTML/XML/XPATH基础

    Html超文本标记语言 网页上单击右键→查看源文件/查看源代码 Html基本结构 <html>               为文档根元素,所有元素都在内部进行 <head>   ...

  3. Remove '@override' annotation解决办法

    最近刚刚配置了新机器,将原来的代码放在eclipse上执行,总会出现Remove '@override' annotation,如果要一个个手动删除相当麻烦,最后在网上找了一下原因原来是编译器版本的问 ...

  4. oracle启动流程

    1.切换为oracle用户:su - oracle,如: $su - oracle 2..启动监听器:lsnrctl status,如: [oracle@master ~]$ lsnrctl star ...

  5. NSArray, NSSet, NSDictionary

    一.Foundation framework中用于收集cocoa对象(NSObject对象)的三种集合分别是: NSArray 用于对象有序集合(数组)NSSet 用于对象无序集合(集合) NSDic ...

  6. c语言和c++栈的简单实现以及构造器的原理

    也就是训练将原来的c语言 用类表示出来.. 关于构造器: //1与类名相同 没有返回值 被系统生成对象时自动调用,用于初始化 //2 可以有参数 构造器重载 默认参数 //3 重载和默认不能同时存在, ...

  7. EF 连接MySql

    使用EntityFramework6连接MySql数据库(db first方式) http://www.cnblogs.com/24la/archive/2014/04/03/ef6-mysql.ht ...

  8. bzoj 3624: [Apio2008]免费道路【生成树+贪心】

    先把水泥路建生成树,然后加鹅卵石路,这里加的鹅卵石路是一定要用的(连接各个联通块),然后初始化并查集,先把必需的鹅卵石路加进去,然后随便加鹅卵石路直到k条,然后加水泥路即可. 注意判断无解 #incl ...

  9. 使用Docker Compose编排微服务

    一般微服务架构会包含若干个微服务,而每个微服务可以有多个实例,如果每个微服务都有手动启停,那么效率就很低.维护量比较大. 所以我们可以使用Docker Compose来轻松.高效地管理容器. 一.安装 ...

  10. bzoj2333[SCOI2011]棘手的操作 洛谷P3273 [SCOI2011]棘手的操作

    2333? 先记一下吧,这题现在全部都是照着题解做的,因为怎么改都改不出来,只好对着题解改,以后还要再做过 以后再也不用指针了!太恶心了!空指针可不止直接特判那么简单啊,竟然还要因为空指针写奇怪的分类 ...