博客
关于我
Flutter开发初探
阅读量:419 次
发布时间:2019-03-06

本文共 1413 字,大约阅读时间需要 4 分钟。

Flutter学习感想

目前跨端开发比较热门的就是 React Native 和 Flutter 了,到底该选哪门技术似乎也快成了大前端圈的一个热门话题。对于web前端来说,基于web生态的 React Native 应该是一个更加顺畅而自然的选择;但 Flutter 让人动心的地方就是高性能和 跨端UI一致性。而 React Native 发展不太明朗和 Flutter 越发成熟的走势对比促使我从观望的心态转为加入 Flutter。

一、初步体验

这里主要就是记录一下学习 Flutter 的一些感想和看法:

  • 包管理

    Flutter 的包管理和传统的 npm package管理有很大不同。 pubspec.yaml 文件的作用类似于 package.json ,而.yaml 格式也比 json 方便。但是不能用命令行自动安装包却让习惯了 npm 的我觉得麻烦。因为 Flutter 安装依赖包的流程是:

    • 打开网站;
    • 搜索需要的包,得到包的名称和版本;
    • 把包名称和版本填入 pubspec.yaml ,最后才开始下载包。

    这个流程虽然可靠,但让我觉得不够高效。习惯了 npm 的直接命令行安装包,让人觉得麻烦。也许未来 Flutter 能添加命令行工具来自动处理包管理,直接指定包名或版本号就可以下载对应的依赖包。

  • 布局和样式

    Flutter 的布局和样式确实有其独特的方式。与 React Native 的 JSX 或 XML 格式不同, Flutter 更注重 widget 化和 Dart 的热重载特性。

    • 热重载:修改代码后只需重新运行一次,会自动刷新 UI,这大大提升了开发效率。
    • 布局组件:一切都是 widget ,但很多常见的样式属性(如 Center、Align、Padding)需要通过嵌套来实现。这种方式虽然灵活,但也导致了代码嵌套严重,且样式复用困难。
    • 期待 DSL 框架:希望未来能有更适配的布局 DSL ,让布局和样式更直观,减少嵌套,提升代码可读性。
  • JSON 处理

    Dart 作为强类型语言,对 JSON 处理有一定的限制。

    • 类定义:需要为每个 JSON 结构定义对应的 Dart 类,这与 JavaScript 或 TypeScript 的弱类型语言相比显得繁琐。
    • 工具支持:虽然有一些工具库可以简化 JSON 处理流程,例如通过脚本生成 Dart 模型类,但这仍然需要手动操作,缺乏自然流畅。
    • 改进建议:希望 Flutter 能提供更智能的 JSON 支持,类似于 React Native 中的 JSON 模型。
  • 状态管理

    Flutter 的状态管理主要依赖于 setState 和 Provider 框架。

    • ** setState**:简单易学,适合单组件管理状态。
    • 跨组件通信:需要借助 Provider 或 Redux 等库,目前 Redux 的样板代码较多,不够简洁。
    • 期待函数式状态管理:希望 Flutter 能提供类似 React Hooks 的状态管理方式,让状态管理更加简洁和灵活。
  • 二、总结

    说了这么多,本质就是为什么 Flutter 不向以 React 为代表的 web 生态看齐?更大的原因是 Flutter 的很多理念和开发模式其实远远落后于 React 。这也是为什么习惯 React/Vue 的 web 前端 对 Flutter 感觉很别扭不顺手的原因了。

    转载地址:http://pcduz.baihongyu.com/

    你可能感兴趣的文章
    Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
    查看>>
    Nginx配置如何一键生成
    查看>>
    Nginx配置实例-负载均衡实例:平均访问多台服务器
    查看>>
    NHibernate学习[1]
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
    查看>>
    NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>
    NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
    查看>>
    Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
    查看>>
    NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
    查看>>
    NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
    查看>>
    NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
    查看>>
    NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
    查看>>
    NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
    查看>>
    NIH发布包含10600张CT图像数据库 为AI算法测试铺路
    查看>>
    Nim教程【十二】
    查看>>
    Nim游戏
    查看>>