https://github.com/pingzidev/flutter_app_learn
https://github.com/pingzidev/flutter_app_learn
Last synced: 26 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/pingzidev/flutter_app_learn
- Owner: PingziDev
- Created: 2020-05-13T09:07:17.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2020-06-16T00:18:37.000Z (almost 6 years ago)
- Last Synced: 2025-01-13T07:12:30.540Z (over 1 year ago)
- Language: Dart
- Size: 107 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Flutter学习小记录
## 常用指令
```
rm ~/Documents/flutter/bin/cache/lockfile
flutter pub get
```
## json_model
```
flutter packages pub run json_model
```
```
flutter packages pub run build_runner build
```
这触发了一次性构建,我们可以在需要时为我们的Model生成json序列化代码,它通过我们的源文件,找出需要生成Model类的源文件(包含@JsonSerializable标注的)来生成对应的.g.dart文件。一个好的建议是将所有Model类放在一个单独的目录下,然后在该目录下执行命令。
### 目录结构
文件夹 作用
common 一些工具类,如通用方法类、网络接口类、保存全局变量的静态类等
l10n 国际化相关的类都在此目录下
models Json文件对应的Dart Model类会在此目录下
states 保存APP中需要跨组件共享的状态类
routes 存放所有路由页面类
widgets APP内封装的一些Widget组件都在该目录下
### Dart Model
处理json字符串,将Json "Model" 化
```json
{
"name": "John Smith",
"email": "john@example.com"
}
```
将json转换为List或Map
```dart
Map user = json.decode(user);
```
添加一个名为`User`的`Model Class`,包含:
- 一个User.fromJson 构造函数, 用于从一个map构造出一个 User实例 map structure
- 一个toJson 方法, 将 User 实例转化为一个map.
```dart
class User {
// ...
User.fromJson(Map json)
: name = json['name'],
email = json['email'];
Map toJson() =>
{
'name': name,
'email': email,
};
}
```
使用
```dart
Map userMap = json.decode(json);
var user = new User.fromJson(userMap);
print(user.name);
```
序列化
```dart
String json = json.encode(user);
// 不需要手动调用toJson这个方法,因为`JSON.encode内部会自动调用。
```
### 数据持久化