Flutter遇到问题整理

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/

Flutter遇到问题整理_第1张图片
image.png

使用图中的目录结构

Flutter遇到问题整理_第2张图片
image.png

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');

你可能感兴趣的:(Flutter遇到问题整理)