最近打算做一个应用来收集灵感和整理素材,帮助写文章。Flutter全平台,早如雷贯耳。想着可以一套代码运行在手机、平板、电脑,那就真的全方位收集素材,再简单打个服务器就可以爽歪歪了。

结果flutter一上来就给我一顿打脸。

由于想用拖动的方式收集素材,特别在iPad上可以多应用分屏,收集素材不需要再保存图片再导入图片到应用。另外复制文字可以直接通过拖动来获取。

而现实是,Flutter sdk不支持外部应用拖动文件进来。其内部的Draggable和Dragtarget组件只能实现内部的拖动,或者说Dragtarget组件只能接受Draggable的组件。

经过大量时间的搜索,flutter的一位贡献者自己开发了从flutter应用中拖拽图片出去(github相关issue在这里 https://github.com/flutter/flutter/issues/30719, 其他目前flutter pub中支持此功能的只有在web平台实现的插件。而在ios web等其他平台,各位需要自己实现各个平台的flutter插件。但是这研究一个平台插件的花费的时间,可能足够我在原生平台用swift或者kotlin把应用做好了。

可能这其中的工作量可能会带来更多的工作机会?也许是各个flutter开发者每天沉浸在繁重的开发过程中可能性更大一点。

而等我转到Electron,柳暗花明。此时此刻我们是幸运的,web api我们可以尽情享用。

只需通过dataTransfer的getData方法,获取正在拖动的文本或者图片的src或者a标签的href。

通过dataTransfer.files获取正在拖动的文件。

    document.addEventListener('drop', (event) => {event.preventDefault()      event.stopPropagation();      console.log(event.dataTransfer.getData("text/uri-list"))if (event.dataTransfer.getData("text/plain")) {// URLif (event.dataTransfer.getData("text/plain").indexOf('://') > -1) {const img = document.createElement('img')img.src = event.dataTransfer.getData("text/plain")document.body.append(img)} else {// 文字const img = document.createElement('div')img.innerText = event.dataTransfer.getData("text/plain")document.body.append(img)}      }          // 文件for (const f of event.dataTransfer.files) {console.log('File Path of dragged files: ', f.path)const img = document.createElement('img')img.src = f.path        document.body.append(img)}    })

一切都是那么美好。

Flutter毕竟是个注重UI和动效的UI框架,更何况dart的生态还没有建立的很完善。所以只推荐展示类的应用使用它实现。一套代码跨全平台还是很香的。

但是一旦是复杂的编辑或者创作类应用我还是更倾向原生或者使用Electron,React Native开发。

#Flutter##electron##跨平台开发##React#

为什么我从Flutter转投Electron的怀抱?相关推荐

  1. 慕尼黑讨论放弃 Linux 转投 Windows 10

    德国慕尼黑市花了十年时间从Windows和Office迁移到开源替代--基于Ubuntu的LiMux和OpenOffice.现在,慕尼黑市的政客正在辩论是否放弃Linux再次转投微软的怀抱--这一次是 ...

  2. VS Code 成主宰、Vue 备受热捧!2019 前端开发趋势必读

    前端在生产和开发中占据着越来越重要的地位,PC 端.手机端.桌面端.智能手表端等等设备都离不开前端的身影.本文将围绕框架.编程语言.工具.React.Vue 等方面,全面回顾 2019 年前端与 We ...

  3. Visual Studio Code为什么能这么牛X?

    点击上方"视学算法",选择"置顶或者星标" 你的关注意义重大! 作者:李少侠 链接:https://zhuanlan.zhihu.com/p/35303567 ...

  4. VS Code为什么能这么牛?

    作者:李少侠 https://zhuanlan.zhihu.com/p/35303567 已获转载授权 Visual Studio Code(VS Code)近年来获得了爆炸式增长,成为广大开发者工具 ...

  5. Visual Studio Code,这是要上天?

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"加入公众号专属技术群 来源:http://1t.click/akuE 它作为一个 ...

  6. VSCode 与 WebStorm 横向对比

    前言 不能认清自己,怎能看清别人? 最近很长一段时间,VSCode 似乎成为了前端口中的标准开发编辑器,前端圈到处都在推荐 VSCode,劝说其他人放弃 Sublime, WebStorm, Atom ...

  7. Android Weekly - 42 : 打铁还需自身硬

    技术文章 Android Native | 内存问题的终极武器 --MTE https://juejin.cn/post/7013595058125406238 Android R 常见 GC 类型与 ...

  8. 推荐几个我经常浏览的前端博客

    前言 今天有人私信问我优秀的前端博客,说实话我个人也是刚入门,看的也不是太多,这里分享一下我觉得比较好的前端博客. 胖哥 技术胖,原名,我也不知道,10年要出1000集免费教程,掘金前端优秀作者,这是 ...

  9. 为什么 VS Code 会这么牛逼?

    点击上方"码农突围",马上关注,每天早上8:50准时推送 真爱,请置顶或星标 来自公众号码农翻身 | 作者:李少侠 链接:zhuanlan.zhihu.com/p/35303567 ...

最新文章

  1. 【团队】 冲刺一(10/10)
  2. 如何将程序添加到系统服务实现开机自启动
  3. wxPython_Phoenix在线安装
  4. Python下tornado实现webSocket实现
  5. boost::math模块使用词法转换的一个非常简单的例子的测试程序
  6. 指标搭建篇:如何搭建指标体系?——以公众号实战为例
  7. 杭州 3~5年 前端面经,高频面试题总结
  8. 解决Ubuntu18.04 No wifi adapter found
  9. 粤嵌gec6818项目设计_西安市幸福林带景观及亮化设计国际竞赛终期评审会顺利举行...
  10. anaconda没有vscode_Ubuntu18.04安装Anaconda3和VSCode指南
  11. 原生input和onchange
  12. linux常用内核端口,基于Linux下的/O端口和I/O内存详解
  13. C语言中 . 和 - 区别详解(举例解释)
  14. dubbo 解决既是消费者又是提供者 Duplicate application configs 的问题
  15. IS-IS详解(二)——IS-IS邻居建立
  16. [渝粤教育] 西南科技大学 刑法学 在线考试复习资料(1)
  17. C++调用tensorflow训练好的SSD物体检测模型-opencv3.4.3
  18. [笔记]MySQL 配置优化
  19. Dreammail 下载与安装
  20. 为什么博客图片不显示?

热门文章

  1. 浮华,原来青春是一场梦
  2. 【决策树算法】泰坦尼克号乘客生存预测
  3. 杨百万:中国股市是政策市 炒股要听党和政府的话
  4. IEEE Transactions on Instrumentation and Measurement(IEEE TIM)投稿记录
  5. matlab在振动信号处理中的应用pdf,matlab在振动信号处理中的应
  6. easypoi 语法_英语语法那些事儿
  7. JetBot之旅(1)
  8. MySQL——O4. 表结构设计和数据类型优化
  9. 转:Dictionaryint,string怎么获取它的值的集合?急!急!急!
  10. hihocode_1082 沼跃鱼