Flutter之使用Overlay创建全局Toast并静态调用

Toast在Android上是最常用的提示组件了,它的优势在于静态调用、全局显示,可以在任意你想要的地方调用他而丝毫不影响界面的布局,调用简单程度与Logger的调用不相上下。
然而在Flutter中并没有给我们提供Toast的接口,想要实现Toast的效果有两种途径,一种是接Android/iOS原生工程,第二种是不依托于使用Flutter来实现。
本篇选用第二种方案来实现,接原生代码一方面要求双端开发工作量和门槛都较大,而且不利于以后的样式扩展,二是纯Flutter实现的Toast确实效果非常好,自定义样式也非常的方便。使用Flutter相对于RN来说,Flutter的渲染引擎是非常强大的,基本上能用Flutter实现的效果都不建议接原生,而RN则没有自己的渲染引擎,性能的限制造成RN需要频繁的接入原生模块,这也是我倾心Flutter的原因。

效果图

Flutter之屏幕截图/组件截图

继续更新Flutter系列,本篇记录如何在Flutter中进行截图,在Flutter中万物皆组件,不但高斯模糊是套一层组件,截图也是套一层组件,所以屏幕截图和组件截图其实是一个意思。虽然Flutter的这种嵌套UI很繁琐,但是用习惯了反而会感觉结构很清晰,不用担心布局相关代码的混乱,在FlutterInspector识图下更是一目了然,可以在不翻阅代码的情况下快速理解别人写的布局。
本次用到的组件是RepaintBoundary,效果图:
效果展示

安装HighSierra版本黑苹果

很尴尬,前几天给黑苹果收到了推送,升级Mojave,黑色主题漂亮得很,然后就升了,谁知道就系统就挂掉了,无奈重装系统索性直接装了Mojave,更尴尬的是装好之后,发现Mojave根本就没有gtx750的显卡驱动,貌似是苹果不支持这个显卡架构了,然后就更无奈的装回了HighSierra,在不换A卡的情况下,这应该是最后一个版本的N卡黑苹果了。
记录一下吧,以后也能过来烧个香。

Flutter之在Flutter布局中嵌入原生组件Android篇

之前介绍过在原生工程内嵌入Flutter,以页面形式或者View的形式嵌入都是可以的,最近看Flutter源码发现Flutter还支持在Flutter布局中嵌入原生View,这个特性在文档中还没有介绍,但是确实是一个非常实用的特性,比如困扰已久的地图实现,有了这个特性我们就可以在Flutter布局中嵌入双平台的原生高德地图或百度地图,甚至是相机预览视频通话SDK等。
本篇一个简单的TextView为示例,介绍如何在Flutter工程中嵌入原生组件。
图片预览

Flutter之使用PageView实现图片预览视差效果

继续Flutter系列博客的更新,google在昨天12月14日发布了Flutter的1.0(Stable)版本,不同于google挖的其他坑,Flutter自发布release版本号到第一个stable版本之间也才过了十个月,可见google对Flutter的定位绝不是一个实验性质的框架。
虽然有人说放版本号不要钱,但这最起码也说明了官方的态度,像Facebook的ReactNative,已经陆陆续续更新了三年,目前为止的最新版是0.57,仍旧没有发布1.0,加上其他因素已经有很多开发者放弃了使用ReactNative和相关开源库的维护。
Google在昨天放出的公告上还有更劲爆的消息,Flutter支持桌面应用开发和Web应用开发的框架将会陆续放出来,届时Flutter将真正成为跨APP/桌面/Web的跨平台UI框架,非常值得期待,相关链接放上(梯子自备)。
碎碎念有点多了,本篇记录如何使用PageView组件实现图片预览的视差效果,效果图如下:
效果图

Flutter之实现动态高斯模糊

Flutter火了。Google的Fuchsia操作系统和配套的Flutter开发框架在去年发布了Preview版本,沉寂了一年之后在今年的google大会上又一次被提名,超高的渲染性能和Android/iOS跨平台的特性让它又一次被推向风口浪尖。
最近准备开个Flutter系列博客的更新,以作知识储备。
回到正题,高斯模糊不是什么新奇的特效,原生平台经常见到的,本篇记录如何在Flutter框架下实现动态的高斯模糊。
静态预览 动态预览 列表滚动预览

热烈庆祝本博客从hexo框架切换至hugo框架

本博客从2014年起就一直在使用hexo进行构建,随着博文数量的增加hexo的构建耗时越来越大,好在博文是markdown书写,切换至hugo框架成本并不高,相对于hexo来说hugo来写博客有更大的优势:

  • 基于golang,更快的构建速度。
  • 不依赖任何运行时,而hexo需要nodejs环境。
  • 支持编写实时预览,无需F5刷新页面。
  • 配合caddy可以实现在线编辑。

git免密操作的三种方式

git是日常工作中经常用到的,无论是日常代码提交还是服务运维pull和push都是不可避免的,关于免密操作我们并不陌生,在idea这样的IDE环境中人性化工具会帮助我们记住密码,在命令行中我们经常使用ssh秘钥进行免密操作。
本文则着重记录ssh免密外两种不常用的git免密配置。

  • ssh免密
  • credential-helper免密
  • https-url免密

Android工程内嵌Flutter,跨平台的渐进式解决方案

其实2017年的时候就已经接触Flutter了,但也只是写了个HelloWorld,一方面是Flutter在那时候还只是preview版本,另一方面ReactNative在那时候非常火热,忙于用ReactNative重构项目,错过了入坑Flutter的第一梯队。
在谷歌的2018IO大会上Flutter再一次成为了跨平台方案的焦点,而ReactNative也在随着Airbnb的弃用热度逐渐冷却,其实在写下这篇文章的时候我已经再次入坑了不短的一段时间,Flutter的各种特性也基本上都接触到了,demo项目也写了一些,但致使我迫不及待的写下这篇文章的直接原因是Flutter的这个能力:
Flutter能够无感知的嵌入到Android工程中,不管是从开发者角度还是用户角度,你甚至可以只从一个view开始来让Flutter参与到你的项目中去,接着替换或者开发某一个页面甚至功能,然后你就会对它爱不释手,让你会有用它重构项目和开发新项目的冲动。

  • 用户:毫秒级的加载速度,无论是view还是页面,基本上和原生无异。
  • 开发:只作为一个module引入工程,代码入侵极小,Android工程和Flutter工程互不相干。

Android工程内嵌Flutter

tmux使用详解

tmux是一个终端复用软件,那么什么是终端复用软件呢?或者说它有什么用呢?
正常情况下,我们连接Linux服务器,一般会通过xshell这类工具或者直接使用ssh命令来登录,而在操作Linux服务器时不可避免的会遇到操作被阻塞的这类情况,比如apt-get下载安装一个软件或者用docker拉取一个比较大的镜像,而这时候我们又想进行其他操作,比如mv一个文件或者关机回家,如果是前者还好说,再打开一个终端窗口,再次创建ssh连接即可,但是如果你要关机回家,那这个阻塞执行的进程也就挂掉了。而针对刚才提到的这两种场景,使用tmux就能很好的解决这些问题。 tmux最主要的几个特性:

  • 可以通过一个ssh终端连接创建出多个可管理的终端
  • 由tmux创建的终端可以自由分离并保持在后台运行,断开ssh连接也没关系。
  • 可以随时切回分离的在后台运行的终端
  • 可以在多个tmux终端中灵活切换

,