1.Flutter Dart 静态变量值为null的bug
问题出现
使用global.dart文件中的Global对象的静态变量来缓存登录用户的信息。变量的赋值什么的都没有问题,可是当我在另一个页面想使用这个static的变量的时候,发现它神奇的变成了null。
这个坑爹的问题让我改了很多代码,然而并没有什么卵用,最后不知道是什么促使我google了一下这个关键字“flutter static object value lost”,还真是dart的坑。
原因
dart导入文件的时候可以用相对路径,也中以用package路径,像下面这样:
import 'package:jyyl_flutter/common/global.dart';
import 'global.dart';
坑爹的地方就在这里,当你用上面两种方式导入同一个dart文件的时候,其实你得到的是使用同一份源代码的两个不同的library。
解决
使用同一种方式引入
注意:系统自动引入有时候会不一样 ,我就是在不同文件中使用Global对象时,系统自动引入的方式不一样导致的这个问题。
2.关于图片资源声明
参考文章:https://flutterchina.club/assets-and-images/
使用图中的目录结构
pubspec.yaml
中asset部分只需引入common目录,就会自动加载改目录下的所有资源。
在设备像素比率为1.8的设备上,.../2.0x/my_icon.png
将被选择。对于2.7的设备像素比率,.../3.0x/my_icon.png
将被选择。
3.生成 androidx 机制 flutter_module
flutter create --androidx -t module flutter_module
4.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 "{}" \;
5.热重载
$ cd some/path/my_flutter
$ flutter attach
flutter packages pub run json_model
6.一些常见的转换
// String -> int
var one = int.parse('1');
assert(one == 1);
// String -> double
var onePointOne = double.parse('1.1');
assert(onePointOne == 1.1);
// int -> String
String oneAsString = 1.toString();
assert(oneAsString == '1');
// double -> String
String piAsString = 3.14159.toStringAsFixed(2);
assert(piAsString == '3.14');