开源一个Flutter编写的完整终端模拟器

上次开源了一个简易的终端模拟器,我也知道并不是标准的,但自己也一直在用,然后就发现了一些棘手的问题,就又跑去研究了一些完整终端的源码,termux,Android Terminal,最后成功的将他们的原理在 Flutter 实现

其实这个源也可能会是你学习使用 dart:ffi 的一个例子,其中用到的 char **,也就是二级指针的传递在也很少能在官方的 example 中也很难找到直接的例子,也是我处理这种类型遇见的比较麻烦的坑,主要就是没有案例。我将 termux 的 C 语言部分完全重构以供 Flutter 使用,由于 UI 框架使用的 Flutter 经过测试可以在 Macos 上跑起来!!!

阅读更多

Dart:ffi上手二:C语言基本函数的调用

Dart 对 C 语言的调用我个人感觉比 Java 的 jni 要简单得多,用不着还在 C 语言中创建出对应的函数才能调用,Dart 都能直接调用 C 语言原有的那些函数,因为 java jni 调用 C 语言的完整流程我也上手写过,Dart 还是简易多了,不用打乱已有 C 语言的结构

阅读更多

Dart:ffi上手一:So库编译篇

我是首先去看了官方的前两个 example,都上手来跑了,然后对应理解每一部分,dart:ffi 的例子是在 pc 端,所以一系列的编译也是在 pc 端,可我是安卓端的 app,于是就遇见了第一个坑,交叉编译.c,.h 到 so 库

阅读更多

开源一个Flutter编写的简易终端模拟器

在 Android 原生中执行 shell 可以使用 Runtime 的这些类,更多的会选择第三方开发者封装好的库来调用 shell,完整的终端模拟器,如 termux,Android Terminal 等都涉及到一些 jni 通信,C 语言中 system 函数可以执行命令行命令,python 中则是 os.system 函数,各类语言都有执行命令行的函数与方法,在 dart 中,我们通过 Process 类来实现这些功能

阅读更多

Flutter炫酷的波纹路由动画

  写这个的一切起因都得从我某天切换了酷安 App 的夜间模式说起,看个 Gif,忽略图中其他无关项。
Gif
这种的动画在 awesome-Flutter 上好像见到过,但是记得只是类似,有一个 App 的首次引导页跟这个有点像,不过那个是在一个 PageView 切换的时候的动画。上图的酷安 App 是原生应用,可以看到我在第三次切换主题的时候滑动了一个横向的类似于 Flutter ListView 的东西,再次点击切换主题,ListView 的状态变化了,所以我怀疑酷安是用 StartActivity 的方式(太久没碰原生 UI 了,所以只是猜测)

阅读更多

Flutter跨应用更改状态在安卓端的实现

如何让 Flutter 程序可以跨应用的更改其他应用的状态呢,先看原生如何实现,其次再用 MethodChannel 对接 Flutter 就行了,所以此篇更多的是安卓原生开发的知识,提到原生开发跨应用发送消息或者更改状态,有两个东西能够实现这样的需求,一个是 ContentObserver,另一个就是 Broadcast

阅读更多