Flutter JsonToDart Mac版 lei了,真的不mark嗎

前面作了C#版本的JsonToDart,支持Windows和Web。不少小夥伴問怎麼沒有Mac版本的,其實在作C#版本的時候就考慮過用Flutter來下實現flutter-desktopflutter-web,可是考慮到本身熟悉的技術以及flutter-desktop和flutter-web如今只是個小白鼠階段就沒有優先考慮。在完成C#版本以後,花了些時間轉換成了Dart版本,進而開啓了flutter-desktop和flutter-web的填坑之路。。html

入坑相關東東linux

其實最近發現不少大佬都入坑了, flutter-desktopflutter-web,以前光是看大佬們說,本身沒動手作作。git

我是mac小白,徹底不懂配置,因此看了入坑指南低調大佬,從配置環境到放棄Flutter Desktop Mac版Flutter Web 評測,這是低調大佬寫的攻略,只要按照步驟走就能夠了。github

  • flutter-desktop 沒有提供打包方式,所有都是debug版本,因此會出現黃色溢出警告(有誰知道怎麼禁止這個警告,請告訴下,感恩)golang

  • flutter-desktop mac產出未知,也許是由於我不夠了解吧。windows是exe,微軟粉輕鬆找到。web

  • flutter-desktop 不支持快捷鍵,好比Ctrl+C,Ctrl+V。後面只有靠go-flutter打包來解決這個問題。如何使用go-flutter打包json

  • flutter-web 本地運行沒問題,打包發佈網頁顯示異常。 在windows上面打包的時候,注意在cmd/PowerShell裏面執行 webdev build。別像我同樣用git執行,提示命令找不到windows

  • flutter-desktop 和flutter-web沒有完整的生命週期, 無法知道程序關閉的時機,致使我加了一個保存配置按鈕(感受隨變隨存不太好,特別是有輸入框)數組

一頓操做下來,感受flutter-desktopflutter-web確實只是小白鼠階段,不過用go-flutter打出來的mac版本,已經足夠使用了。瀏覽器

JsonToDart 指南

功能最全面的Json轉換Dart的工具,支持Windows,Mac,Web以及Linux。

相關:

Flutter Candies qq羣181398081

下載

平臺 語言 描述 代碼/安裝包地址
windows C# uwp構建,運行環境windows10,x86/x64 windows-uwp.zip
windows C# wpf構建,運行環境windows10/windows8/widnows7,x86/x64 windows-wpf.zip
windows dart flutter構建, 使用官方方式編譯,x64 ,debug版本 windows-x64-flutter.zip
windows dart flutter構建, 使用go-flutter編譯,x64 ,debug版本 windows-x64-go-flutter.zip
mac dart flutter構建,使用go-flutter編譯(官方方式,未找到產物) mac-go-flutter.zip
web C# silverlight構建, 須要安裝silverlight插件,有瀏覽器限制 網頁地址帶字體文件網頁地址
web dart flutter-web構建 網頁地址
linux dart flutter構建, 使用官方方式編譯,(沒有環境測試,僞裝能夠用) 代碼地址

安裝

UWP(Windows10)

Windows10 用戶

考慮到應用商店常常大姨媽,就沒有上傳到商店了。

下載好安裝包,解壓。

第一次安裝,須要安裝證書,請按照下圖,使用PowerShell打開Add-AppDevPackage.ps1,一路接受就安裝完畢

後面若是工具備更新,能夠下載最新的,而後點擊FlutterCandiesJsonToDart_x.0.x.0_x86_x64.appxbundle 安裝

WPF(Windows7/Windows8)

Windows7/Windows8 用戶

下載解壓,點擊setup.exe安裝

Silverlight(Web)

帶字體文件是由於可能有亂碼,因爲中文字體問題,包含了中文字體文件,第一次會比較久,請耐心等待

首先須要安裝Silverlight

Mac的用戶下載Mac的,Windows用戶下載Windows的

而後就是瀏覽器問題了,由於支持Silverlight的瀏覽器是有限的,除了Internet Explorer支持,如下版本的瀏覽器也支持.

Mac Safari 12.0如下的能夠嘗試這樣開啓插件

Mac Firefox這個版本能使用

Flutter(Mac)

go-flutter生成的產物是二進制程序,運行爲exec,能夠雙擊打開, 後由低調大佬測試打包DMG,安裝便可,注意在安全性與隱私中贊成安裝,具體如何打包能夠查看Go Flutter Desktop (二) go 二進制程序打包爲 mac app(dmg)

Flutter(Windows_x64)

flutter官方產物或者go-flutter產物爲exe,點擊exe啓動

使用

左邊是json的輸入框以及最後Dart生成的代碼,右邊是生成的Json類的結構

格式化

點擊格式化按鈕,將json轉換爲右邊可視化的json類結構

更多設置

設置會所有自動保存(flutter版本除外,須要手動保存),一次設置終身受益

數據類型全方位保護

你們必定會有被服務端坑的時候吧? 不按規定好了的數據類型傳值,致使json整個解析失敗。

打開這個開關,就會在獲取數據的時候加一層保護,代碼以下

dynamic convertValueByType(value, Type type, {String stack: ""}) {
  if (value == null) {
    debugPrint("$stack : value is null");
    if (type == String) {
      return "";
    } else if (type == int) {
      return 0;
    } else if (type == double) {
      return 0.0;
    } else if (type == bool) {
      return false;
    }
    return null;
  }

  if (value.runtimeType == type) {
    return value;
  }
  var valueS = value.toString();
  debugPrint("$stack : ${value.runtimeType} is not $type type");
  if (type == String) {
    return valueS;
  } else if (type == int) {
    return int.tryParse(valueS);
  } else if (type == double) {
    return double.tryParse(valueS);
  } else if (type == bool) {
    valueS = valueS.toLowerCase();
    var intValue = int.tryParse(valueS);
    if (intValue != null) {
      return intValue == 1;
    }
    return valueS == "true";
  }
}
複製代碼

數組全方位保護

在循環數組的時候,一個出錯,致使json整個解析失敗的狀況,你們遇到過吧?

打開這個開關,將對每一次循環解析進行保護,代碼以下

void tryCatch(Function f) {
  try {
    f?.call();
  } catch (e, stack) {
    debugPrint("$e");
    debugPrint("$stack");
  }
}
複製代碼

遍歷數組次數

在服務器返回的數據中,有時候數組裏面不是每個item都帶有所有的屬性,

若是隻檢查第一個話,會存在屬性丟失的狀況

你能夠經過屢次循環來避免丟失屬性

選項有1,20,99

99就表明循環所有進行檢查

屬性命名

屬性命名規範選項:保持原樣,駝峯式命名小駝峯,帕斯卡命名大駝峯,匈牙利命名下劃線

Dart 命名規範

Dart 官方推薦 駝峯式命名小駝峯

屬性排序

對屬性進行排序

排序選項: 保持原樣,升序排列,降序排序

添加保護方法

是否添加保護方法。數據類型全方位保護/數組全方位保護 這2個開啓的時候會生成方法。第一次使用的時候開啓就能夠了,你能夠方法提出去,後面生成Dart就沒有必要每一個文件裏面都要這2個方法了。

文件頭部信息

能夠在這裏添加copyright,improt dart,建立人信息等等,支持[Date yyyy MM-dd]來生成時間,Date後面爲日期格式。

好比[Date yyyy MM-dd] 會將你生成Dart代碼的時間按照yyyy MM-dd的格式生成對應時間

屬性訪問器類型

點擊格式化以後,右邊會顯示可視化的json類結構,在右邊一列,就是屬性訪問器類型設置

選項:默認,Final,Get,GetSet

頂部設置修改,下面子項都會修改。你也能夠單獨對某個屬性進行設置。

修改json類信息

點擊格式化以後,右邊會顯示可視化的json類結構。

第一列爲在json中對應的key

第二列爲屬性類型/類的名字。若是是類名,會用黃色背景提示

第三列是屬性的名字

輸入選項若是爲空,會報紅提示

生成Dart

作好設置以後,點擊生成Dart按鈕,左邊就會生成你想要的Dart代碼,而且提示「Dart生成成功,已複製到剪切板」,能夠直接複製到你的Dart文件裏面

是否是很方便很人性化,歡迎Start,Fork,666三連。

最後放上 Josn To Dart,若是你有什麼不明白或者對這個方案有什麼改進的地方,請告訴我,歡迎加入Flutter Candies,一塊兒生產可愛的Flutter 小糖果(QQ羣:181398081)

再次邀請,有心爲Flutter生態作貢獻的小夥伴加入Flutter Candies,一塊兒開心地寫bug。

最最後放上Flutter Candies全家桶,真香。

相關文章
相關標籤/搜索