[Flutter笔记]Flutter多端一体化简介

1,068 阅读2分钟

背景(Why)

为什么需要多端一体化

  • 多端复用
  • ...

概览(What)

多端一体化是什么(不是什么)

跨端方案描述

  • Flutter:Flutter is Google’s UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a single codebase.
  • ReactNative:Learn once, write anywhere.
  • Qt:One framework. One codebase. Any platform.
  • Eletron:Build cross-platform desktop apps with JavaScript, HTML, and CSS

跨端方案对比

/ Android iOS Windows MacOS Linux Web
Flutter ✅ 推荐 ✅ 推荐 ✅ 推荐 ✅ 推荐
ReactNative ✅ 推荐 ✅ 推荐 ?
Electron ✅ 推荐 ✅ 推荐 ✅ 推荐
Qt ✅ 推荐 ✅ 推荐 ✅ 推荐
  • 主流通用方案:Flutter/ReactNaitve
    • AndroidiOSWeb使用频次高,覆盖范围广
  • 桌面通用方案:Electron
    • WindowsmacOS主流桌面平台
  • 高性能通用方案:Qt

原理(How)

多端一体化如何做到——Flutter框架剖析

Dart构建方式

Dart编译图谱@mermaidjs

  • Dart支持两种构建方式:编译成Native代码 & 转译成JavaScript代码,使Flutter能适配Native APP和Web APP
  • Dart的常量构造函数使Flutter支持声明式编程布局,无需JSX、XML或者单独的可视化界面构建器,大大降低Flutter适配多平台难度(why-flutter-uses-dartFlutter FAQ

dart.dev/platforms

/ develop production
dart2native JIT AOT
dartdevc
dart2js

Flutter-平台 构建体系

Android/iOS-macOS/Flutter

/ 编译器 运行时 包管理器 构建系统
Kotlin kotlinc JVM Maven Gradle
Java javac JVM Maven Gradle
-
Swift swiftc Swift Runtime SPM swift-llbuild
ObjC ObjC Runtime CocoaPods Xcode Build dart/build
-
Dart dart2native dartaotruntime Pub dart/build
  • Android/iOS与Flutter

Android/iOS与Flutter@mermaidjs

Windows/Linux/Web

/ 编译器 运行时 包管理器 构建系统
C# MSVC# .Net NuGet MSBuild
C/C++(Win) MSVC MSVC runtime NuGet/Vcpkg MSBuild
-
C/C++(Linux) GCC libc/libstdc++ Conan/Hunter CMake
-
JavaScript (browser) NPM Webpack/Grunt/Gulp
  • Windows与Flutter

Windows与Flutter@mermaidjs

  • Web 与 Flutter

Web与Flutter@mermaidjs

Flutter-平台 交互能力

Dart API与平台API@mermaidjs

/ Android iOS-macOS Windows Linux Web
MessageChannel ✅ 推荐 ✅ 推荐
dart:ffi ✅ 推荐 ✅ 推荐
dart:js ✅推荐

Flutter-平台 混合方式

Package vs Plugin

flutter.dev/docs/develo…

/ Dart Flutter Platform
Dart pacakge
Flutter pacakge
Flutter plugin
  • Dart package

Dart package@mermaidjs

  • Flutter package

Flutter package@mermaidjs

  • Flutter plugin

Flutter plugin@mermaidjs

  • 合并起来

Dart package & Flutter package & Flutter plugin@mermaidjs

Add-to-app

  • Android/iOS

Android/iOS@mermaidjs

  • Windows/macOS

Flutter官方尚未提供

  • Web

Flutter官方尚未提供,可以手动或者自动集成

Web@mermaidjs