Flutter 踩坑集锦
首先,中文网位置:
Flutter中文网
官网位置
Flutter官网
环境和安装(win10)
- win10+ 开启虚拟化(这个倒是无所谓)
- JAVA & PATH中
JAVA_HOME
的设置 - 下载flutter或
git clone flutter
的仓库 - Android Studio
SDK下载,并把SDK的路径写入path - VisualStudio下载,安装时勾选 C++ 桌面程序
- VSCODE + Plugin:flutter+dart+...
这些就自行安装了
执行flutter doctor
查看错误
一般有可能有一些错误,下面是不同的解法
- android license未同意,这个直接到sdk下面找sdkmanager,然后
sdkmanager --licenses
,同意所有就OK - maven仓库的问题(未FQ)
这个找
flutter/packages/flutter_tools/gradle/flutter.gradle
flutter/packages/flutter_tools/lib/src/http_host_validator.dart
修改maven()和google()为国内的仓库
踩到的坑
Q:不要在createState中放置参数
A:方法有两种
- 添加 //ignore ... ,代码提醒中有
- 直接使用widget(类似于js中的this),在StatefulWidget中定义参数
class A extends StatefulWidget {
const A({Key? key, required this.fun}) : super(key:key);
final Function fun;
@override
State<A> createState() => _A();
}
class _A extends State<A> {
...
// 使用时如下
widget.fun()
}
Q:经常遇到组件要不要使用const的warning问题
A:如果对象中有变量或者函数不要用const,如果是确定的固定的东西就要用const
比如 const BorderRadius.all(Radius.circular(10))
就要用const,因为里面是不变的。
比如 TextField( controller: controller , ...)
就不能用const。
Q:怎么实现毛玻璃
Container >
child: ClipRect(矩形) / ClipRRect(圆角) (
borderRadius: ... // ClipRRect专属
child: BackdropFilter(
filter:ImageFilter.blur(sigmaX: double, sigmaY:double) // 设置毛玻璃的半径
)
)