Flutter学习笔记&学习资料推荐,大学生android开发项目实例

本文是关于Flutter开发的学习笔记,包括Flutter中的一些Tips、Dart字符串处理、页面状态保持、国际化问题解决、Android Studio连接设备问题、Gradle构建问题、显示Snack Bar的错误、Utf8Decoder使用问题、屏幕尺寸获取、平台判断、刷新问题及优化、资源批量添加和代码性能优化。此外,还介绍了如何处理嵌套问题和Flutter调试方法。
摘要由CSDN通过智能技术生成

下面是我在学习过程中遇到的一些问题:

国际化过程中执行命令arb文件生成dart时报错

在Flutter实战教程中,最后一步根据翻译好的arb文件生成dart文件,执行如下命令报错Cannot open file

flutter pub pub run intl_translation:generate_from_arb --output-dir=lib/l10n --no-use-deferred-loading lib/l10n/localization_intl.dart l10n-arb/intl_*.arb

解决方法:文件管理器中进入项目根目录下,在git bash终端执行命令即可,原因是windows下执行不识别*号通配符会报错。

这句命令在首次运行时会在"lib/l10n"目录下生成多个文件,对应多种Locale,这些代码便是最终要使用的dart代码。

Android Studio运行Flutter时无法连接设备

如下图,有时会发现这里找不到设备无法运行:

在这里插入图片描述

解决方法:先关闭AS,然后到flutter sdk的安装目录下, 将\flutter\bin\cache下的lock文件删除,再重启AS。如果还是不行,那么多试几次就可以了。或者有其他的IDE工具连接了你的设备,关闭其他的IDE就可以了。

在这里插入图片描述

Fliutter运行时一直卡在Running Gradle task 'assembleDebug’

这个有时会卡很久,有时卡一会儿就好了,原因是AS正在后台执行下载,此时可以打开任务管理器,查看AS的磁盘和网络使用状况:

在这里插入图片描述

如果你发现这里的速度很高,说明它正在疯狂的下载,一般多等待一会儿就可以了。可是如果你发现这里也没有什么流量,而它一直卡在那里,说明是依赖库无法下载,如果是android端,可以打开项目的android文件夹,然后修改build.gradle文件如下:

在这里插入图片描述

使用阿里云的maven地址就可以,速度会很快,然后在AS的Tools工具菜单中执行Flutter>Flutter Clean,再重新运行即可。如果还是不行,首先到前面的Flutter 环境配置参考url的配置。如果还不行的话,那可能需要在Terminal终端中cd到android目录下,执行下面命令:

gradlew clean

gradlew build

或者可以选中android文件夹右键Flutter->Open Android module in Android Studio可以把android目录当成一个标准的android项目打开重新build即可。最终再重新回到Flutter项目运行。

showSnackBar报错

Unhandled Exception: Scaffold.of() called with a context that does not contain a Scaffold.

解决方法:使用GlobalKey

var _scaffoldkey = GlobalKey();

return Scaffold(

key: _scaffoldkey,

),

onPressed: () {

_scaffoldkey.currentState.showSnackBar(SnackBar(content: Text(‘显示snackBar’)));

}

使用Utf8Decoder时提示参数错误

在Flutter实战教程中遇到代码片段socket.transform(utf8.decoder).join()报参数不匹配的错误,于是找到了stack overflow的这个utf8.decoder not working after latest Flutter Upgrade,原来这只是一个api的兼容性问题,解决方法:

使用StreamTransformer.bind(Stream) 代替 Stream.transform(StreamTransformer).

例:

  • Before: foo.transform(utf8.decoder)...

  • After: utf8.decoder.bind(foo)...

viewport was given unbounded height.width.

一般情况下是需要给一个固定的高度或宽度,可以参考这个, 但是有时可能都不起作用,还是嵌套的布局使用有问题,去参考官网的布局约束原理 | 处理边界问题

从其他应用切回Flutter应用页面无响应

这是我偶尔发现的一个神奇的问题:Flutter应用在切出应用以后再切回到应用,页面没有响应(不响应任何点击事件),测试手机版本:Android 7.1.1 魅族Pro6

本来我愉快的写着demo, 但是突然有一天,当我按下Home返回桌面再返回来的时候,发现什么都不能点击了。。whf。。?

后来我想了下Flutter这么牛逼的团队,应该不会把有如此明显的严重问题的版本发出来使用吧。。但是它确实是发生了,就发生在我的眼前,而且是百分百重现。

这个问题困扰了好久,因为几乎所有的我创建的应用都是这样的,从github上下载的其他人的demo也有类似情况,但是大多数都是正常的。

后来调查发现是跟flutter sdk版本有关系:

| 版本 | 测试结果 |

| — | — |

| flutter sdk 1.17.4 | 切回应用正常 |

| flutter sdk 1.20.1 | 切回应用无响应 |

| flutter sdk 1.20.2 | 切回应用无响应 |

| flutter sdk 1.20.3 | 切回应用正常 |

现在至少可以确定在 >1.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值