首页 > 其他分享 >Flutter

Flutter

时间:2024-03-06 15:26:20浏览次数:27  
标签:原生 平台 React UI Flutter Native

简述:

  时隔多年,又捡起了Flutter,粗略对比了一下React Native,总体来说,相差不是特别大,性能方面原生组件的React Native可能会更好一些,但是想想,现在设备都这么强悍,而且Flutter生态这些年也强大了不少,还是选择Flutter,根据文档描述来看,还是一整套下来的比较方便开发.整理了一个表格,列举了一下我觉得需要关注的一些内容,大家可以参考看看就行.至于最终选择哪个框架,还得是自己喜欢.

  至于其他框架,喜欢就行,我选这俩对比,是因为工作量而言都差不多,几年前写过一个Flutter项目,近两年在写Electron+React.没错,我是Android开发工程师.Electron虽然也想整理一下,但我是个比较懒的程序员,说不定发了这篇,都没下一篇了,大家看看就行.

功能

 

Flutter

 

React Native

 

开发文档

Flutter 开发文档

简介 · React Native 中文网

编程语言

Dart

JavaScript

平台覆盖

支持 iOS、Android、Web、桌面(Windows、macOS、Linux)、嵌入式等多种平台

支持 iOS、Android、Web、Windows、macOS、tvOS 等多种平台

UI 开发

Flutter 允许更高程度的自定义和控制

React Native 可以更好地与平台原生 UI 集成

UI 渲染

使用 Skia 渲染引擎,自绘 UI,高度自定义

使用平台原生组件,一定程度上受限于平台原生 UI

跨平台渲染

使用 Skia 渲染引擎实现跨平台渲染

使用平台原生组件进行渲染

原生组件支持

通过 Platform Channel 实现与原生组件的交互

直接支持使用平台原生组件

生态系统

相对较弱,但在迅速增长

成熟的生态系统,庞大的社区和丰富的第三方库

热更新

支持热更新,可以实现应用程序的在线更新

支持热更新,可以通过第三方服务(如 CodePush)来实现应用程序的在线更新

开发热加载

支持

支持

平台集成

需要使用 Platform Channel 进行底层调用

直接调用原生平台的 API

数据持久化

支持 Sqflite、Hive 等数据库

支持 AsyncStorage、Realm 等

动画支持

提供了丰富的动画库,如 Flutter Animation

支持原生动画 API、动画库

第三方库

支持(Pub Package Manager,Dart Packages,Platform-specific Packages 等)

支持(npm,JavaScript Packages,Native Modules 等)

网络请求

提供了 http、dio 等库进行网络请求

支持 fetch API、Axios 等

开发调试工具

提供了 Flutter DevTools 进行调试和性能优化

提供了 React Native Debugger 等工具

安全性

Flutter 可以实现更高级的安全特性

React Native 依赖于平台原生的安全特性

多语言

支持

支持

UI一致性

Flutter 的自绘 UI 技术能够实现跨平台的 UI 一致性

React Native 使用平台原生组件,可能会因平台差异导致 UI 不完全一致

适配性

Flutter 需要通过适配器或自定义 UI 来适配不同平台的特性

React Native 可以直接调用平台原生的 API,适配性相对较好

打包工具

Flutter 提供了命令行工具和集成开发环境(如 Android Studio、VS Code、CI/CD)来进行打包和部署

React Native 使用各平台原生的打包工具(如 Android Studio、Xcode)来进行打包和部署

本地包引用

支持使用 Platform Channels 和 Method Channels 与原生代码进行通信,因此您可以通过编写原生插件来集成 SO 文件。您可以编写一个 Dart 包装器来调用原生代码,然后使用 Platform Channels 将 Dart 代码与原生代码连接起来。

可以使用 Native Modules 或者使用第三方的 React Native 插件来集成 SO 文件。如果您使用原生模块,您可以直接在 Java 或者 Objective-C/Swift 代码中调用 SO 文件的函数。

订阅付费

in_app_purchase | Flutter package      Android,iOS

npm: react-native-iap      Android,iOS

广告开发

Google AdMob、Facebook Audience Network、Unity Ads、AppLovin等

Google AdMob、Facebook Audience Network、Unity Ads、AppLovin等

标签:原生,平台,React,UI,Flutter,Native
From: https://www.cnblogs.com/pmokj/p/18056667

相关文章

  • 性能优化 flutter
     1.widgetbuild()方法避免执行重复耗时的非必要操作避免在widget或者state的build()方法中进行重复且耗时的非必要工作,因为当父widget重建时,子widget的build()方法会被频繁地调用。因此确保非必要的耗时工作不放在build()方法中。2.控制widgetsetState()的重建范围......
  • Flutter的Icon
    1基本的组件使用(自带)Cloumn算一个和自定义Container齐平的一个组件使用比较简单,但是Icon中有很多对Icon进行设置的方式疑问:是否能够对Icon进行圆角修饰呢??returnconstColumn(children:[SizedBox(height:20,),Icon(Icons.home_work_rounded,......
  • flutter动画— —显式动画
    常见的显式动画有RotationTransition、FadeTransition、ScaleTransition、SlideTransition、AnimatedIcon。在显示动画中开发者需要创建一个AnimationController,通过AnimationController控制动画的开始、暂停、重置、跳转、倒播等。RotationTransition(旋转动画)、AnimationC......
  • Flutter组件
    两个常用的组件:Material和Scaffold修饰App和H5一样很固定。1.Container2.Text3.pictureimport'package:flutter/material.dart';voidmain(){runApp(MaterialApp(home:Scaffold(appBar:AppBar(title:Text("Flutter")),bod......
  • Flutter widget_id: key 的使用
    Flutterwidgetid(唯一标识):keykey的作用Key是一个附加到元素(widgets,semantics,renderobjects等)的标识符。它用于控制框架是否应将旧widget与当前树中的其他widget匹配起来。简单来说,Keys的作用主要在于保持状态和在widget树重建时识别哪些widget是相同的。key的......
  • Flutter 定义局部路由 Navigator
    Flutter中,通常我们使用Navigator来管理全局的页面路由,在整个应用中维护一个路由堆栈。但是,有些情况下你可能需要一个局部路由,也就是在应用的某个部分内部维护一个独立的路由堆栈,而不影响全局路由。为了实现这一点,你可以在你的应用中创建一个新的Navigator局部路由简单使用......
  • Isolate线程通信 flutter
    A、B互传消息A、B都创建自己的接收端口和发送端口A将自己的发送端口发送给对面B,B才能拿到A的发送端口,给A发送消息A监听自己的接收端口,拿到B发给自己的消息B监听自己的接收端口,拿到A发给自己的消息voidfunction_main()async{print("当前线程:"+Isolate.current.debu......
  • Flutter 页面跳转并返回数据
     主页面FutureonSubmit()async{finalresult=awaitGet.to(constPageGoodsSelectList());print(result.name);goodsId.value=result.id;setState((){goodsname.value=result.name;});}调用onSubmit跳转到下一个页面 onChildT......
  • 为什么iOS包比Android包大 flutter
    由于Android系统已经内置了Skia,所以Flutter在打包APK(Android应用安装包)时,不需要再将Skia打入APK中,但iOS系统并未内置Skia,所以构建iPA时,也必须将Skia一起打包 安卓1.在debug模式下,so库打入了x86_64、x86、arm64-v8a,总共22.28M2.在release模式下,so库只有armeabi-v7a,总共3.4......
  • Flutter界面跳转
    第一种带参数跳转import'package:flutt/scrond_page.dart';import'package:flutt/third_page.dart';import'package:flutter/cupertino.dart';import'package:flutter/material.dart';voidmain(){runApp(constCupertinoApp(......