前面作了C#版本的JsonToDart,支持Windows和Web。不少小伙伴问怎么没有Mac版本的,其实在作C#版本的时候就考虑过用Flutter来下实现flutter-desktop 和flutter-web,可是考虑到本身熟悉的技术以及flutter-desktop和flutter-web如今只是个小白鼠阶段就没有优先考虑。在完成C#版本以后,花了些时间转换成了Dart版本,进而开启了flutter-desktop和flutter-web的填坑之路。。html
入坑相关东东linux
其实最近发现不少大佬都入坑了, flutter-desktop 和flutter-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-desktop 和flutter-web确实只是小白鼠阶段,不过用go-flutter打出来的mac版本,已经足够使用了。浏览器
功能最全面的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构建, 使用官方方式编译,(没有环境测试,伪装能够用) | 代码地址 |
Windows10 用户
考虑到应用商店常常大姨妈,就没有上传到商店了。
下载好安装包,解压。
第一次安装,须要安装证书,请按照下图,使用PowerShell打开Add-AppDevPackage.ps1,一路接受就安装完毕
后面若是工具备更新,能够下载最新的,而后点击FlutterCandiesJsonToDart_x.0.x.0_x86_x64.appxbundle 安装
Windows7/Windows8 用户
下载解压,点击setup.exe安装
带字体文件是由于可能有乱码,因为中文字体问题,包含了中文字体文件,第一次会比较久,请耐心等待
首先须要安装Silverlight
Mac的用户下载Mac的,Windows用户下载Windows的
而后就是浏览器问题了,由于支持Silverlight的浏览器是有限的,除了Internet Explorer支持,如下版本的浏览器也支持.
Mac Firefox这个版本能使用
go-flutter生成的产物是二进制程序,运行为exec,能够双击打开, 后由低调大佬测试打包DMG,安装便可,注意在安全性与隐私中赞成安装,具体如何打包能够查看Go Flutter Desktop (二) go 二进制程序打包为 mac app(dmg)
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 官方推荐 驼峰式命名小驼峰
对属性进行排序
排序选项: 保持原样,升序排列,降序排序
是否添加保护方法。数据类型全方位保护/数组全方位保护 这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中对应的key
第二列为属性类型/类的名字。若是是类名,会用黄色背景提示
第三列是属性的名字
输入选项若是为空,会报红提示
作好设置以后,点击生成Dart按钮,左边就会生成你想要的Dart代码,而且提示“Dart生成成功,已复制到剪切板”,能够直接复制到你的Dart文件里面
是否是很方便很人性化,欢迎Start,Fork,666三连。
最后放上 Josn To Dart,若是你有什么不明白或者对这个方案有什么改进的地方,请告诉我,欢迎加入Flutter Candies,一块儿生产可爱的Flutter 小糖果(QQ群:181398081)
再次邀请,有心为Flutter生态作贡献的小伙伴加入Flutter Candies,一块儿开心地写bug。
最最后放上Flutter Candies全家桶,真香。