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

JsonToDart 相關(guān)文章

前面做了C#版本的JsonToDart,支持Windows和Web。

image

很多小伙伴問怎么沒有Mac版本的,其實(shí)在做C#版本的時候就考慮過用Flutter來下實(shí)現(xiàn)flutter-desktop
flutter-web,但是考慮到自己熟悉的技術(shù)以及flutter-desktop和flutter-web現(xiàn)在只是個小白鼠階段就沒有優(yōu)先考慮。在完成C#版本之后,花了些時間轉(zhuǎn)換成了Dart版本,進(jìn)而開啟了flutter-desktop和flutter-web的填坑之路。。

入坑相關(guān)東東

其實(shí)最近發(fā)現(xiàn)很多大佬都入坑了, flutter-desktop
flutter-web,之前光是看大佬們說,自己沒動手做做。

我是mac小白,完全不懂配置,所以看了入坑指南低調(diào)大佬,從配置環(huán)境到放棄,Flutter Desktop Mac版
Flutter Web 評測,這是低調(diào)大佬寫的攻略,只要按照步驟走就可以了。

  • flutter-desktop 沒有提供打包方式,全部都是debug版本,所以會出現(xiàn)黃色溢出警告(有誰知道怎么禁止這個警告,請告訴下,感恩)

  • flutter-desktop mac產(chǎn)出未知,也許是因?yàn)槲也粔蛄私獍?。windows是exe,微軟粉輕松找到。

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

  • flutter-web 本地運(yùn)行沒問題,打包發(fā)布網(wǎng)頁顯示異常。 在windows上面打包的時候,注意在cmd/PowerShell里面執(zhí)行 webdev build。別像我一樣用git執(zhí)行,提示命令找不到

  • flutter-desktop
    和flutter-web沒有完整的生命周期,
    沒法知道程序關(guān)閉的時機(jī),導(dǎo)致我加了一個保存配置按鈕(感覺隨變隨存不太好,特別是有輸入框)

一頓操作下來,感覺flutter-desktop
flutter-web確實(shí)只是小白鼠階段,不過用go-flutter打出來的mac版本,已經(jīng)足夠使用了。

JsonToDart 指南

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

相關(guān):

Flutter Candies qq群181398081

下載

平臺 語言 描述 代碼/安裝包地址
windows C# uwp構(gòu)建,運(yùn)行環(huán)境windows10,x86/x64 windows-uwp.zip
windows C# wpf構(gòu)建,運(yùn)行環(huán)境windows10/windows8/widnows7,x86/x64 windows-wpf.zip
windows dart flutter構(gòu)建, 使用官方方式編譯,x64 ,debug版本 windows-x64-flutter.zip
windows dart flutter構(gòu)建, 使用go-flutter編譯,x64 ,debug版本 windows-x64-go-flutter.zip
mac dart flutter構(gòu)建,使用go-flutter編譯(官方方式,未找到產(chǎn)物) mac-go-flutter.zip
web C# silverlight構(gòu)建, 需要安裝silverlight插件,有瀏覽器限制 網(wǎng)頁地址帶字體文件網(wǎng)頁地址
web dart flutter-web構(gòu)建 網(wǎng)頁地址
linux dart flutter構(gòu)建, 使用官方方式編譯,(沒有環(huán)境測試,假裝可以用) 代碼地址

安裝

UWP(Windows10)

Windows10 用戶

考慮到應(yīng)用商店經(jīng)常大姨媽,就沒有上傳到商店了。

下載好安裝包,解壓。

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

image

后面如果工具有更新,可以下載最新的,然后點(diǎn)擊FlutterCandiesJsonToDart_x.0.x.0_x86_x64.appxbundle 安裝

image

WPF(Windows7/Windows8)

Windows7/Windows8 用戶

下載解壓,點(diǎn)擊setup.exe安裝

image

Silverlight(Web)

帶字體文件是因?yàn)榭赡苡衼y碼,由于中文字體問題,包含了中文字體文件,第一次會比較久,請耐心等待

首先需要安裝Silverlight

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

然后就是瀏覽器問題了,因?yàn)橹С諷ilverlight的瀏覽器是有限的,除了Internet Explorer支持,以下版本的瀏覽器也支持.

image

Mac Safari 12.0以下的可以嘗試這樣開啟插件

Mac Firefox這個版本能使用

Flutter(Mac)

go-flutter生成的產(chǎn)物是二進(jìn)制程序,運(yùn)行為exec,可以雙擊打開,
后由低調(diào)大佬測試打包DMG,安裝即可,注意在安全性與隱私中同意安裝,具體如何打包可以查看Go Flutter Desktop (二) go 二進(jìn)制程序打包為 mac app(dmg)

Flutter(Windows_x64)

flutter官方產(chǎn)物或者go-flutter產(chǎn)物為exe,點(diǎn)擊exe啟動

使用

image

左邊是json的輸入框以及最后Dart生成的代碼,右邊是生成的Json類的結(jié)構(gòu)

格式化

點(diǎn)擊格式化按鈕,將json轉(zhuǎn)換為右邊可視化的json類結(jié)構(gòu)

更多設(shè)置

設(shè)置會全部自動保存(flutter版本除外,需要手動保存),一次設(shè)置終身受益

數(shù)據(jù)類型全方位保護(hù)

大家一定會有被服務(wù)端坑的時候吧? 不按規(guī)定好了的數(shù)據(jù)類型傳值,導(dǎo)致json整個解析失敗。

打開這個開關(guān),就會在獲取數(shù)據(jù)的時候加一層保護(hù),代碼如下

T asT<T>(dynamic value) {
  if (value is T) {
    return value;
  }
  if (value != null) {
    final String valueS = value.toString();
    if (0 is T) {
      return int.tryParse(valueS) as T;
    } else if (0.0 is T) {
      return double.tryParse(valueS) as T;
    } else if ('' is T) {
      return valueS as T;
    } else if (false is T) {
      if (valueS == '0' || valueS == '1') {
        return (valueS == '1') as T;
      }
      return bool.fromEnvironment(value.toString()) as T;
    }
  }
  return null;
}

數(shù)組全方位保護(hù)

在循環(huán)數(shù)組的時候,一個出錯,導(dǎo)致json整個解析失敗的情況,大家遇到過吧?

打開這個開關(guān),將對每一次循環(huán)解析進(jìn)行保護(hù),代碼如下

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

遍歷數(shù)組次數(shù)

在服務(wù)器返回的數(shù)據(jù)中,有時候數(shù)組里面不是每一個item都帶有全部的屬性,

如果只檢查第一個話,會存在屬性丟失的情況

你可以通過多次循環(huán)來避免丟失屬性

選項(xiàng)有1,20,99

99就代表循環(huán)全部進(jìn)行檢查

屬性命名

屬性命名規(guī)范選項(xiàng):保持原樣,駝峰式命名小駝峰,帕斯卡命名大駝峰,匈牙利命名下劃線

Dart 命名規(guī)范

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

屬性排序

對屬性進(jìn)行排序

排序選項(xiàng): 保持原樣,升序排列,降序排序

添加保護(hù)方法

是否添加保護(hù)方法。數(shù)據(jù)類型全方位保護(hù)/數(shù)組全方位保護(hù) 這2個開啟的時候會生成方法。第一次使用的時候開啟就可以了,你可以方法提出去,后面生成Dart就沒有必要每個文件里面都要這2個方法了。

文件頭部信息

可以在這里添加copyright,improt dart,創(chuàng)建人信息等等,支持[Date yyyy MM-dd]來生成時間,Date后面為日期格式。

比如[Date yyyy MM-dd] 會將你生成Dart代碼的時間按照yyyy MM-dd的格式生成對應(yīng)時間

屬性訪問器類型

點(diǎn)擊格式化之后,右邊會顯示可視化的json類結(jié)構(gòu),在右邊一列,就是屬性訪問器類型設(shè)置

image

選項(xiàng):默認(rèn),F(xiàn)inal,Get,GetSet

頂部設(shè)置修改,下面子項(xiàng)都會修改。你也可以單獨(dú)對某個屬性進(jìn)行設(shè)置。

修改json類信息

點(diǎn)擊格式化之后,右邊會顯示可視化的json類結(jié)構(gòu)。

第一列為在json中對應(yīng)的key

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

第三列是屬性的名字

輸入選項(xiàng)如果為空,會報紅提示

生成Dart

做好設(shè)置之后,點(diǎn)擊生成Dart按鈕,左邊就會生成你想要的Dart代碼,并且提示“Dart生成成功,已復(fù)制到剪切板”,可以直接復(fù)制到你的Dart文件里面

是不是很方便很人性化,歡迎Start,F(xiàn)ork,666三連。

最后放上 Josn To Dart,如果你有什么不明白或者對這個方案有什么改進(jìn)的地方,請告訴我,歡迎加入Flutter Candies,一起生產(chǎn)可愛的Flutter 小糖果(QQ群:181398081)

再次邀請,有心為Flutter生態(tài)做貢獻(xiàn)的小伙伴加入Flutter Candies,一起開心地寫bug。

image

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

image
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容