Flutter和SwiftUI比较

0.语言

  • SwiftUI 毫无疑问是Swift语言编写,
    • 在2019年正式推出,目前最新是Swift 5.9 (2023年9月),由Apple公司维护和发行;
    • 该编程语言发明人已离职Apple。
  • Flutter 一直使用Dart语言编写,
    • 在2017年正式推出,目前最新版本是Flutter v3.13, Dart v3.1 (2023年8月),由Google公司维护和发行;
    • 该编程语言发明人已离职Google。

1.页面布局

  • SwiftUI使用view为基础,以声明式(declarative syntax)语法布局用户界面;
    • View,视图可以现实文字,图片,图标,音频等等
    • HStack,水平方向布局,相当于excel表格里的行(row)
    • VStack,垂直方向布局,相当于excel表格里的列(column)
    • ZStack,Z轴布局,可以图层叠加
    • GridGridRow格子布局
    • List 列表布局
    • ScrollView,页面可以滚动
    • animation(),控件后面使用.修饰符,传入参数动画样式
  • Flutter使用widget为基础,以声明式(declarative syntax)语法布局用户界面,分为StatelessWidget和StatefulWidget
    • Widget, 相当于视图,可以包括显示文字,图片,图标,音频等等
    • Row,水平方向布局,相当于excel表格里的行(row)
    • Column,垂直方向布局,相当于excel表格里的列(column)
    • StackZ轴布局,可以视图叠加
    • GridView格子布局
    • ListView 列表布局
    • SingleChildScrollView,页面可以滚动
    • Animation,控件嵌套包裹住希望的控件,然后传入参数动画样式

2.数据绑定

  • SwiftUI使用声明式属性修饰符@State绑定数据,一旦状态发生变化,则会重新计算一个视图界面里的首要body属性
  • Flutter,若界面不依赖数据更新,则使用StatelessWidget,如界面需要更新数据,则界面使用StatefulWidget

3.系统API调用

例如系统的摄像机、麦克风、GPS、陀螺仪,等等

  • SwiftUI直接使用,因为SwiftUI是基于iOS操作系统已存在的布局体系上建立;
  • Flutter使用plugin来调用,如果plugin没有,则可以自己通过原生代码封装;

4.编译和性能

  • SwiftUI,开发和生成期间编译都是AOT (Ahead-of-Time),编译时会将高级的Swift代码转换成低级的机器码,并对iPhone,iPad,MacOS做了深度优化;开发期间支持view在Xcode即可预览效果。
  • Flutter,开发期间编译使用JIT (Just-In-Time),支持hot-reload;部署生产期间使用AOT (Ahead-of-Time),为了对iOS和Android更高的ARM code优化。

5.渲染引擎

  • SwiftUI,是Apple的原生布局框架,高效的集成了Apple的硬件性能和简单易用的API。
  • Flutter,使用Skia引擎(Skia是一个开源的2D图形库,由C++编写),这是跨平台的,因此和某个具体平台无关,渲染时需要提交到硬件加速,可以开发丰富的和可交互式的UI。

引用

1.Flutter官方分析区别,Flutter和SwiftUI:https://docs.flutter.dev/get-started/flutter-for/swiftui-devs?tab=swiftui

相关推荐
玫瑰花开一片一片1 小时前
Flutter IOS 真机 Widget 错误。Widget 安装后系统中没有
flutter·ios·widget·ios widget
hepherd3 小时前
Flutter 环境搭建 (Android)
android·flutter·visual studio code
烎就是我4 小时前
100行代码swift从零实现一个iOS日历
ios·swift
鸿蒙布道师19 小时前
鸿蒙NEXT开发通知工具类(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
鸿蒙布道师19 小时前
鸿蒙NEXT开发网络相关工具类(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
bst@微胖子20 小时前
Flutter之路由和导航
flutter
亚洲小炫风21 小时前
flutter 中各种日志
前端·flutter·日志·log
littleplayer1 天前
iOS 中的 @MainActor 详解
前端·swiftui·swift
louisgeek1 天前
Flutter 动画之 Implicit 隐式动画
flutter