FlutterUnit
是【张风捷特烈】
长期维护的一个开源项目。 欢迎starnode
通过一段时间的更新,FlutterUnit1.1
已基本知足个人指望
目前正在逐渐增长
和优化
组件的收录。如今mac版闪亮登场
。linux
FlutterUnit.apk 下载 | FlutterUnit mac版 下载 | Github仓库地址 |
---|---|---|
![]() |
![]() |
![]() |
镇楼图
目前稳定版(Stable)本并不支持macos,你能够切换到master分支进行体验。
复制代码
从新准备一个FlutterSDK,并使用flutter master分支
flutter config --enable-macos-desktop
---[• flutter config --enable-macos-desktop
---[• flutter --version
Flutter 1.18.0-7.0.pre.46 • channel master •
https://github.com/flutter/flutter.git
Framework • revision 1f132e90f8 (11 days ago) • 2020-04-23 11:00:12 +0530
Engine • revision d3f1c08f52
Tools • Dart 2.9.0 (build 2.9.0-2.0.dev 64b8ded48b)
复制代码
因为移动端和桌面端的状况有很大的不一样,并且二者须要的SDK不一样。
因此我并不在原移动端代码中进行适配,而是新建分支进行两个独立的项目。
其实两种彻底不一样的情景,并无必要强行合一,不然会感受处处束手束脚。
判断起来也会让代码变的复杂和难以阅读,独立维护也许是更好的选择。
复制代码
flutter pub get
flutter run -d macos
, 或直接经过AndroidStudio
选择设备运行flutter build macos
,在build/macos/Build/Release
中能够看到应用因为mac端录屏出的gif太大了,就不放动图了,全部功能同
移动端
android
使用详情可参见: 【 FlutterUnit 食用指南】 开源篇
本文会说一下我作FlutterUnit mac端的缘由和一些界面的变更。ios
导航栏
了,若是直接用底栏或顶栏,那会很是丑动手能力超强
的我,都是小菜。有就用,没有就造。
通常都很宽
,能够用GridView根据状况分多栏显示item,这样会好看些。右侧导航栏底部的设置
能够打开左侧的菜单左边滑
来打开左侧的菜单,菜单内容保持一致,功能保持一致相关组件
和介绍的位置,同排显示,好看一些。Share插件
还不支持macos,这里代码分享的功能直接改为代码复制
。增删改查操做
和移动端保持一致
功能保持一致git
其实适配到macos我就花了小半天的时间。主要就是主页右边栏的设计和实现。程序员
这也得益于项目的清晰,我知道哪些文件是干吗的,因此抽离是很重要的,酌情抽出变量、方法或类,不要什么东西都塞在一块儿,一旦代码变更就是灭顶之灾。另外bloc维护的业务逻辑能够丝绝不动,只需将相关页面的一些结构进行调整便可,这也是bloc的优点。github
若是活着不是为了装X,那一切都将毫无心义。----张风捷特烈
flutter的桌面应用
我接触flutter也有一年半了,半年前开始从事
flutter桌面应用
的开发,踩过不少坑,也学到不少东西。一切的经历将我对flutter的理解提高了一个层次。可能不少人还在观望flutter在移动端的状况
。却已不知,flutter的桌面应用已在茁壮成长,特别是不少三方插件已经有macos支持。web
一套代码运行在全部的设备上,我称为
统一的跨平台解决方案
,因为设备的应用场景不一样,大小不一样,强行进行适配感受维护的成本过高,这是平台自己的局限性。数据库
我愈来愈感受Flutter 并不是是一个统一的跨平台解决方案,并且能够给编程者一个跨平台的可能性。
其中最重要的一点是: 任何一个程序员,即便它不会C++、C#、Java、Js,也能够经过flutter/dart代码写出mac程序、写出windows程序、写出android程序、写出ios程序、写出linux程序、写出web程序,这就是Flutter所提供的可能性。作梦都没想过玩移动端的我能作出一个mac程序、写出一个windows程序
。macos
固然只会flutter/dart,瓶颈也会存在的,对于平台的特性你不太可能彻底理解。但也无须了解全部的平台特性,毕竟软件的开发并不是一我的的事。插件生态的日益丰富,会逐渐下降flutter开发者对平台的依赖性。对于特定领域、特定功能的软件、也许会出现各端的
flutter插件师
职业。
天下大势,合久必分
,由于没有一我的能够抗住全部的事,一人玩转六端平台也不切实际
。精一而协同,各司其职
,这是解决大问题的有效手段。就像人体由各类功能的细胞共同协做,维持个体生命,而不是一个万能细胞统合做用。
统一的跨平台解决方案
是个美好而伟大的梦。就像让全部人都说一种语言沟通同样,也许只是一个梦而已。它也许不会终止于Flutter。但Flutter所提供的让编程者跨平台的可能性,就像一个万能的翻译机,这无疑是里程碑式的,会闪烁它的光芒。在此,虽然我我的能力微薄,希望举起这星火,FlutterUnit将是这根火把,与我前行。大家要来,便随; 要离,便去, 皆与我无关。
其实除了
FlutterUnit
以外,以前还有一个FlutterUnit tool
的项目
这个项目是用来维护数据库的。看过FlutterUnit
源码的应该都知道,FlutterUnit
是由本地数据库驱动的。没错,就是那个flutter.db
。其中关于组件信息
、详情信息
、详情代码
、收藏集信息
所有都储存在这个数据库中。
但这样作有个很大的缺点:
数据的更新很是困难
,好比修改了实例代码,或修复了文案,或者再拓展一个组件都要去修改数据库,这样维护的成本很是高。因而聪明的我
想到了一个解决方案。定义规则
和解析规则
。
因而我花了两天,对因此的组件源码进行重构,知足以下格式
/// create by 张风捷特烈 on 2020-03-24
/// contact me by email 1981462002@qq.com
/// 说明:
///
// {
// "widgetId": 34,
// "priority": 1,
// "name": "Divider颜色和粗细",
// "subtitle": "【color】: 颜色 【Color】\n"
// "【thickness】: 线粗细 【double】",
// }
import 'package:flutter/material.dart';
class CustomDivider extends StatelessWidget {
@override
Widget build(BuildContext context) {
var dataColor = [
Colors.red, Colors.yellow,
Colors.blue, Colors.green];
var dataThickness = [1.0, 2.0, 4.0, 6.0];
var data = Map.fromIterables(dataColor, dataThickness);
return Column(
children: dataColor
.map((e) => Divider(
color: e,
thickness: data[e],
))
.toList(),
);
}
}
复制代码
经过
node_parser.dart
进行解析。爬取整个项目,一一解析生成bean。
再经过tool插入数据库中。这样一来,我能够随意修改和添加
介绍组件的信息。只需不到1s的时间就能爬取所有全部文件进行数据同步
,这就是工具带来的价值。但这价值的背后,是一个正则的匹配、规则的构思和实践的过程
。遇到问题和解决问题的过程。当我写完整个工具时,那这感受无疑是畅快的,是能力付诸于现实的快感
。 固然这个工具我并未提交
,也不会影响到FlutterUnit
的任何展示。
使用mac的有点在于能够很方便地访问文件,进行爬取分析,这是移动端所不及的。
最后挖个新坑
: 个人我的博客正在整理中: king.toly1994.com/
不久的未来会有一个Flutter相关的长期更新计划
。这时候适合喊一句:
我是张风捷特烈,那个要成为编程之王的男人
。
欢迎Star和关注FlutterUnit 的发展,让咱们一块儿携手,成为Unit一员。
另外本人有一个Flutter微信交流群,欢迎小伙伴加入,共同探讨Flutter的问题,期待与你的交流与切磋。
@张风捷特烈 2019.04.04 未允禁转
个人公众号:编程之王
联系我--邮箱:1981462002@qq.com --微信:zdl1994328
~ END ~