-
什么叫可执行二进制 以前虽然看似也可以生成二进制执行文件, 类似 pub/flutter 命令, 但是那实际也是调用 dart 命令来完成的, 也就是说, 你必须具备 dart 环境才可以 比如以前的 c,后来的 go, 都可以编译成一个可执行文件, 比如./hello-world就可以运行, 然后在控制台输出结果 而在 dart 2.6 版本中, 这个东西变成了现实 如何做 1main(List<String> arguments) { 2 print("hello dart!"); 3} 使用$ dart2native bin/main.dart来完成编译过程, 然后会生成一个main.exe, 虽然 …
阅读更多 -
写在前面, 对于无源码的项目, 理论上必须有头文件,不然你不知道里面都定义了什么鬼东西. 本篇虽然是写无源码的项目, 但实际上还是会有源码部分, 只是通过 cmake,clang,xcodebuild,ndk 等工具编译成 so/framework 以供 android/ios 引入 生成动态库 整体的目录结构是这样的, 如果你只是要引入库, 可以跳过这步, 这步的主要做源码生成库的步骤 1$ tree -L 3 cpp-source 2tree -L 3 cpp-source 3cpp-source 4├── android 5│ ├── CMakeLists.txt 6│ ├── build_android.sh 7│ └── …
阅读更多 -
在 flutter 的 1.10.x 后的分支, dart:ffi 被并入 flutter, 现在 flutter 中也可以使用 ffi 了。 这东西是啥玩意呢, 就是让 dart 可以直接调用 c/c++ 代码等东西的库, FFI(foreign function interface), 在这里。 但是在当前版本中, 这东西在官方说明中依然处于技术预览版, 就是可用, 但后续不保证 api 不变更。 开发环境 首先我是 mac 系统, windows 系统不保证脚本的可用和工具的可用, linux 的话可能一些必要工具需要使用自己平台的包管理工具, 并且涉及到 ios 部分, 必须使用 mac。 所有需要的工具包 Xcode( …
阅读更多 -
好久没水文章了, 强行水一篇 dart 中不可避免会出现文件读取的情况, 甚至是很大的文件, 比如 200M 的文件 如果一次性读入内存,虽然也行得通, 但是如果在 flutter 中开启个 200M 大小的字节数组, 一不小心可能就 crash 了, 这时候就需要使用大文件读取的方案 异步读取 核心方法: 1file.openRead(); 这个方法可以指定开始和结束的坐标, 并开启一个 stream stream 回调信息是 List<int>,单次最大读取 65536 个字节 示例 1class FileUtils { 2 File file; 3 4 FileUtils(this.file); 5 6 // 读取 …
阅读更多 -
在最近两天 dart 更新到了 2.3 的稳定版 增加了一些语法糖,对于开发 flutter 来说会更加的友好 可以查看 当然,本篇不是翻译,只是对于新语法做一个简单的尝试 ...语法 这个语法很眼熟,在 js 中有类似的语法,其他语言可能也有 什么意思呢 看下面的代码 1main(List<String> arguments) { 2 list3Point(); 3} 4 5void list3Point() { 6 var list1 = <int>[1, 2, 3, 4]; 7 8 var list2 = <int>[ 9 0, 10 ...list1, 11 6, 12 ]; 13 14 …
阅读更多 -
前言 如果你接触过npm/yarn 应该知道,有一些包可以全局使用,就是安装后可以直接用,比如vue-cli这样的应用,应该是用node开发的 在dart中也可以实现类似的功能, 使用就可以了,在连接中有完整的说明 也有这样的应用程序可以直接使用 我在这里简单的实战一下,实现一个简单的cli应用程序 这个程序没什么多余的功能,就简单的实现输入敲击unix获取时间戳 建立工程前的准备 将dart,pub加入PATH环境变量 需要在环境变量中添加几个东西,添加环境变量的方式自己搜索一下 一个是dart/bin的目录,你需要在命令行中让dart命令可用 1➜ ~ dart --version 2Dart VM version: 2.1.0 …
阅读更多