Flutter 生成.g.dart文件


根據json生成dart和g.dart

flutter中文網地址

https://book.flutterchina.club/chapter11/json_model.html

 

 

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

這個網站可以自動將json文件轉成json_serializable所需要的格式,新建並復制成***.dart文件,通過在terminal內輸入下面代碼,自動生成.g.dart文件

flutter packages pub run build_runner build

 

如果有報錯可以嘗試一下下面這條

flutter packages pub run build_runner build --delete-conflicting-outputs




Flutter json_serializable標准生成.g.dart文件步驟

Gary_fei
2020.05.09 16:56:52字數 194閱讀 477

前景:

Json序列化工具json_serializable,在導入package, 在model.dart轉模型類中,引入頭文件,聲明@JsonSerializable(),創建類型與屬性,再執行flutter packages pub run build_runner build,然而並沒有自動生成model.g.dart文件

標准步驟:

  1. pubspec.yaml文件導入依賴庫,注意文字的對其
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 
  1. 新建model.dart文件,導入頭文件,文件內容,復制如下,格式最好整齊划一
import 'package:json_annotation/json_annotation.dart'; part 'model.g.dart'; 
  1. cd到工程的根目錄,再執行下面命令
flutter packages pub run build_runner build //使用 build_runner 生成 .g.dart 文件 flutter packages pub run build_runner wacth //監控生成文件,如果有改動時自動生成/更新 .g.dart 文件 
  1. 打開項目,應該就可以看到.g.dart文件

如果出現報錯或者仍然沒生成.g.dart文件

  1. cd到工程的根目錄,再執行下面命令
flutter packages pub run build_runner build --delete-conflicting-outputs //刪除並重新創建.g.dart文件 
  1. 沒有生成,再運行下
flutter packages pub run build_runner build






Flutter 解決使用Json序列化工具json_serializable不生成.g.dart文件

在使用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一下,注意文字的對齊

  1.  
    dependencies:
  2.  
    flutter:
  3.  
    sdk: flutter
  4.  
    json_annotation: ^2.0.0
  5.  
     
  6.  
    dev_dependencies:
  7.  
    flutter_test:
  8.  
    sdk: flutter
  9.  
    json_serializable: ^2.0.0
  10.  
    build_runner: ^1.0.0

然后來到你的model類里面

復制過去(注意現在代碼是報錯的),只用改類名和屬性名,其他不用管

運行一次

  1.  
    import 'package:json_annotation/json_annotation.dart';
  2.  
     
  3.  
    part '你的類名.g.dart';
  4.  
     
  5.  
    @JsonSerializable()
  6.  
     
  7.  
    class 你的類名 {
  8.  
    var name;
  9.  
    var age;
  10.  
    你的類名( this.name,this.age);
  11.  
    factory 你的類名.fromJson(Map<String, dynamic> json) => _$你的類名FromJson(json);
  12.  
    Map<String, dynamic> toJson() => _$你的類名ToJson(this);
  13.  
     
  14.  
    }

 

cd 你的工程目錄

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

flutter packages pub run build_runner wacth //監控生成文件,如果有改動時自動生成/更新 .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

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM