Skip to content

gzlock/flutter_js

 
 

Repository files navigation

魔改 flutter_js

专注改善 flutter_js 的Promise和网络请求方面的运行效率和开发体验。

改动:

  1. 开发了新的 evaluateWithAsync 方法代替原来的 evaluateAsync + handlePromise 组合方法;
  2. 创建QuickJS后自动执行dispatch()建立事件循环,代码文件dispatch的说明
  3. 第一点和第二点结合起来解决了:原 flutter_js 的 handlerPromise方法 每次都要调用一次dispatch()导致抛出Bad state: Stream has already been listened to错误的问题,从此忘了handlePromise()吧;
  4. 修复了js的console.log('第一', '第二', '第三')只能在dart console输出第一个参数的问题,代码文件
  5. 删除了 XMLHttpRequest、fetch、Promise js和dart相关的实现代码;
  6. 重写了JavaScriptCore和QuickJS的Promise机制,更精简更高效;
  7. fetch和promise的js代码在js文件编写,再写了个服务自动写入到promise.dart和fetch.dart
    • js代码自动写入到dart文件避免异步读取资源文件;
    • 自动写入服务使用Node.js实现,不改动这两个js文件不需要安装和运行Node.js;
  8. getJavascriptRuntime()入口增加了fetch传参,运行自行实现网络请求逻辑;
  9. example只保留Promise相关例子代码,其它使用范例请浏览原仓库的example;

0604更新

新增fetch的使用例子,通过response的content-type识别网络请求返回的内容类型,代码文件

⚠️ 请注意,flutter_js内的js运行环境没有Image、FileReader等功能

About

A Javascript engine to use with flutter. It uses quickjs on Android and JavascriptCore on IOS

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Dart 44.2%
  • JavaScript 42.8%
  • C++ 4.8%
  • CMake 3.0%
  • Kotlin 2.4%
  • Swift 1.4%
  • Other 1.4%