首页 > 其他分享 >『Flutter』开篇

『Flutter』开篇

时间:2023-12-31 19:56:30浏览次数:28  
标签:UniApp 开篇 Dart 跨平台 开发 组件 Flutter

什么是 Flutter

  • Flutter 是由 Google 开发的开源框架
  • Flutter 用于构建跨平台的移动应用程序
  • Flutter 它允许开发者使用同一套代码来同时为 IOS 和 Android 平台开发应用程序
  • Flutter 使用 Dart 语言开发,特点是拥有高性能的渲染引擎和丰富的组件库

Flutter 特性

  1. 跨平台能力:Flutter 允许开发者使用同一代码库开发 Android、iOS、Web 和桌面(例如 Windows、MacOS 和 Linux)应用程序
  2. Dart 语言:Flutter 使用 Dart 语言进行编程。Dart 是 Google 开发的一种现代、面向对象的编程语言,它专为 Flutter 优化,易于学习且性能出色。
  3. 热重载:Flutter 的热重载功能使开发者能够在应用运行时即时查看更改效果,这极大提高了开发效率。
  4. 丰富的组件和库:Flutter 提供了大量预制组件(称为 Widgets),可以帮助快速构建美观、响应迅速的用户界面。此外,还有活跃的社区和众多库支持各种功能和集成。
  5. 接近原生的性能:Flutter 应用的性能接近原生应用,因为其渲染引擎直接编译为原生的 ARM 代码,无需通过 WebView 或操作系统的原生组件。
  6. 美观的设计:Flutter 支持 Material Design(Google 的设计语言)和 Cupertino(Apple 的 iOS 风格),允许创建高度定制且视觉上吸引人的界面。

由于其高效性、灵活性和跨平台的能力,Flutter 已成为移动和网络应用开发领域中非常受欢迎的框架之一。

Flutter 与 UniApp 的区别

  • Flutter 和 UniApp 都是用于构建跨平台应用程序的框架
  • 但它们在设计理念、技术实现和使用场景上有着显著的区别

开发语言

  • Flutter 使用 Dart 语言。Dart 是一种由 Google 开发的现代编程语言,专为 Flutter 优化。
  • UniApp 主要使用 JavaScript,结合 Vue.js 的语法,这对于前端开发者来说更熟悉。

技术实现

  • Flutter 直接编译为原生代码,拥有自己的渲染引擎(Skia),因此能够提供接近原生的性能和丰富的 UI 组件。
  • UniApp 采用基于 HTML5 的技术,通过 DCloud 的 mui 框架或其他前端框架实现跨平台应用。它依赖于 WebView 或小程序环境,可能不如 Flutter 在性能上高效。

跨平台能力

  • Flutter 能够构建运行在 Android、iOS、Web 和桌面操作系统上的应用程序。
  • UniApp 强调其“一次开发,多端运行”的能力,支持发布到 iOS、Android、各大主流小程序平台以及 H5。

性能

  • Flutter 由于其直接编译到原生代码和拥有自己的渲染引擎,通常提供更高的性能和更流畅的用户体验。
  • UniApp 可能在性能上不如 Flutter,特别是在复杂或资源密集型的应用场景。

用户界面

  • Flutter 提供丰富的组件库和高度可定制的 UI 组件,允许创建独特且吸引人的设计。
  • UniApp 通常依赖于标准的 HTML5 和 CSS,这可能在一定程度上限制 UI 的创新性和定制性。

生态系统和社区

  • Flutter 拥有 Google 的支持和一个活跃的开发者社区,提供丰富的库和工具。
  • UniApp 由 DCloud 维护,主要在中国有较大的用户基础,社区和生态相对较小。

总的来说,Flutter 更适合需要高性能和高度定制 UI 的应用程序,而 UniApp 更适合追求快速开发和前端技术栈的项目。选择哪个框架取决于具体的项目需求、团队技能和开发目标。

好了大概先知道这么多,简单的介绍一下 Flutter,这个系列是 Flutter, 所以我会将内容进行划分,本文的内容已经结束,下一篇文章我们再继续。

标签:UniApp,开篇,Dart,跨平台,开发,组件,Flutter
From: https://www.cnblogs.com/BNTang/p/17937918

相关文章

  • flutter ios swift avplayer 播放器自动播放下一集
    使用监听监听结束事件importFoundationimportAVKitimportMediaPlayerimportFlutterclassFlutterAVPlayerView:NSObject,FlutterPlatformView{privatevar_flutterAVPlayerViewController:AVPlayerViewControllerprivatevarurlArray:[URL]=[]......
  • ACTF flutter逆向学习
    参考了许多大佬的博客,在此特别诚挚感谢oacia大佬和其他大佬的博客和指导!1.flutter和apk基础结构介绍首先下载附件,是一个apk文件,用jadx打开可以看见flutter字样,而flutter是一种目前比较流行的android框架,很多app都是用的该框架构建,而该原生框架是建立在app的native层。Androi......
  • flutter IOS 原生交互同一个插件多个方法调用
    由于代码比价简单直接上代码ios/Runner/AppDelegate.swiftimportUIKitimportFlutter@UIApplicationMain@objcclassAppDelegate:FlutterAppDelegate{overridefuncapplication(_application:UIApplication,didFinishLaunchingWithOptionslaunchOption......
  • flutter 添加原生IOS 播放器
    定义播放器FlutterAVPlayer.swiftimportFoundationimportAVKitimportMediaPlayerimportFlutterclassFlutterAVPlayer:NSObject,FlutterPlatformView{privatevar_flutterAVPlayerViewController:AVPlayerViewController;init(frame:CGRect,......
  • Flutter常见库使用
    1、网络库diodio:^5.4.0import'package:dio/dio.dart';finaldio=Dio();voidgetHttp()async{finalresponse=awaitdio.get('https://dart.dev');print(response);}2、JSON解析json_serializable:^6.7.1json_annotation:^4.8.1bu......
  • idea flutter dart 代码不跳转 analyze 不起作用
    查看本地dartwheredart/opt/homebrew/bin/dart/Users/jimogangdan/soft/flutter/bin/dart两个版本不一样/opt/homebrew/bin/dart--versionDartSDKversion:3.1.3(stable)(TueSep2614:25:132023+0000)on"macos_arm64"/Users/jimogangdan/soft/flutter/b......
  • flutter常用的设计模式
    单例模式(SingletonPattern):确保一个类只有一个实例,并提供一个全局访问点。工厂模式(FactoryPattern):定义一个创建对象的接口,但让子类决定具体实例化哪个类;常用于创建组件、复杂对象等场景。抽象工厂模式(AbstractFactoryPattern):提供一个创建一系列相关或相互依赖对象的接口,而......
  • Flutter 中常用的缓存数据方式
    SharedPreferences:优点:使用简单,轻量级,适用于少量数据的缓存;缺点:不适合存储大型、结构化、复杂的数据;SQLite:优点:可以存储大量、结构化、复杂的数据,支持复杂的数据查询操作;缺点:比较复杂,需要学习SQL和数据库操作;Hive:优点:快速、可扩展,性能较好,适用于存储大量数据;缺点:不支持......
  • Flutter获取大文件MD5值的方法以及大文件实现分块上传和断点续传
    Flutter获取大文件MD5值的方法最近一直在搞flutter,有一个需求是将一个不到1G的大文件从App端上传到服务器,为了做文件校验所以要获取到文件的MD5。1.第一步首先获取到文件,并计算出文件大小和分快的数目Filefile=File(path);intfileSize=file.lengthSync();inttotalPart=......
  • Flutter 创建一个交错效果的侧边栏菜单
    一、创建一个没有动画效果的菜单import'package:flutter/material.dart';classMenuextendsStatefulWidget{constMenu({super.key});@overrideState<Menu>createState()=>_MenuState();}class_MenuStateextendsState<Menu>{staticc......