Flutter 记录1

使用 json_serializable 时 执行命名报错

1
2
Could not find package "build_runner". Did you forget to add a dependency?
pub finished with exit code 65

解决 加入 build_runner: ^1.10.0 依赖

https://caijinglong.github.io/json2dart/index_ch.html

https://pub.dev/packages/g_json


flutter 在xcode 上调试

在项目文件下 执行(App 的FlutterEdgin 执行后)

1
2
3
4
5
6
//
flutter attach
// 调试模式
flutter attach --isolate-filter='debug'
// 加上调试的
flutter attach --app-id com.hzzhebei.zbios

单例

Flutter中,dart的单例模式设计
创建一个单例的Manager类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Manager {
// 工厂模式
factory Manager() =>_getInstance()
static Manager get instance => _getInstance();
static Manager _instance;
Manager._internal() {
// 初始化
}
static Manager _getInstance() {
if (_instance == null) {
_instance = new Manager._internal();
}
return _instance;
}
}

调用
// 无论如何初始化,取到的都是同一个对象

1
2
Manager manager = new Manager();
Manager manager2 = Manager.instance;

—–main 函数之前执行一些函数报错—

If you’re running an application and need to access the binary messenger before runApp() has been called..

1
2
// main 函数第一行加入
WidgetsFlutterBinding.ensureInitialized();

—- 出现json 自动化生成错误, 报错non-nullable 一直循环, 清理项目解决

1
2
3
flutter clean
flutter packages pub upgrade
flutter pub run build_runner build

From: https://blog.csdn.net/worship_kill/article/details/102892349

在使用Flutter的过程中,想去自己封装一个转model的类,后来写着写着发现根本没法弄,于是就去中文官网看看。

接着就看到了json_serializable,然后就照着做呗,导入package,导入头文件,声明@JsonSerializable(),创建类,属性。然后

flutter packages pub run build_runner build,就没然后了,

没有生成.g.dart,命令行到最后还提醒Succeeded,我就蒙蔽了。

于是反复去工程里查找,就是没找到,于是乎,我又重新创建一个新的工程,再导入一遍,还是不行,我就去github上json_serializable找源码查看,然后试着将

part ‘model.g.dart’;

敲上去,发现代码是报错的,这时候再运行一次flutter packages pub run build_runner build

于是乎就在Model.dart文件下生成了.g.dart文件,欲哭无泪。

附带一个标准生成.g.dart的写法:

首先在pubspec.yaml文件里面导入依赖库,Ctrl + S或者点击一下右上角的下载箭头(VS Code),getPackage一下,注意文字的对齐

dependencies:
  flutter:
    sdk: flutter
  json_annotation: ^2.0.0

dev_dependencies:
  flutter_test:
    sdk: flutter
  json_serializable: ^2.0.0
  build_runner: ^1.0.0

然后来到你的model类里面

复制过去(注意现在代码是报错的),只用改类名和属性名,其他不用管

运行一次

import 'package:json_annotation/json_annotation.dart';

part '你的类名.g.dart';

@JsonSerializable()

class  你的类名 {
  var name;
  var age;
  你的类名(this.name,this.age);
  factory 你的类名.fromJson(Map<String,dynamic> json) => _$你的类名FromJson(json);
  Map<String,dynamic> toJson() => _$你的类名ToJson(this);

}

cd 你的工程目录

flutter packages pub run build_runner build //使用 build_runner 生成 .g.dart 文件

flutter packages pub run build_runner watch //监控生成文件,如果有改动时自动生成/更新 .g.dart 文件

就ok了

还没有生成.g.dart文件或者报错的运行下面的命令

cd 你的工程目录

flutter packages pub run build_runner build –delete-conflicting-outputs //删除并重新创建.g.dart文件

没有生成的再运行一下

flutter packages pub run build_runner build


Author

陈昭

Posted on

2020-11-01

Updated on

2021-12-27

Licensed under

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

Kommentare

You forgot to set the shortname for Disqus. Please set it in _config.yml.