1 简述Flutter是什么以及它的主要优势

Flutter是一种由Google开发的开源移动应用开发框架,可以用于构建高度定制化、美观并且性能卓越的移动应用程序,其主要优势有:

  • 跨平台,一次编码,可编译适配多个平台的应用(iOS ,Android, Web)等,可大大减少开发时间和成本;
  • 高性能,Flutter的性能接近于原生应用,直接使用Dart语言编译成原生代码,避免了使用桥接带来的性能损耗;
  • 热重载,可在不编译整个应用的情况下,即时看到代码更改的效果,极大提高了开发效率;
  • 丰富的组件库,提供了丰富的UI组件,可以快速构建出美观且功能丰富的界面;

2 Dart语言的优势有哪些

  • 即时编译(JIT),可以在运行时优化代码,提高执行速度
  • 预编译(AOT),允许应用在发布前就编译成机器码,运行时不用做任何的编译操作,大大提高了启动速度和运行效率;
  • 类型安全,可在编译时就捕获许多类型错误,提高应用的稳定性和性能;
  • 跨平台性能,可编译成多种平台的原生代码,
  • 其他,如并发支持等;

3 怎样管理Flutter应用的状态

涉及到数据在UI组件之间的共享和同步,几种流行的状态管理库:

3.1 Provider

优点: 轻量级,内置于Flutter中,适合基本的状态管理 ,通过InheritedWidger机制简化了状态的传递和访问,使得UI组件能够响应状态的变化;

缺点:状态更新是通过ChangeNofifier等机制来实现,这在复杂应用中可能稍显不足;

3.2 GetX

优点:全能框架,不仅可以用于状态管理 ,还支持路由和依赖注入,简单易用,性能优秀

缺点:使用了全局单例的模式,可能会带来类型冲突和内存回收问题

3.3 Mobx

优点: 通过响应式编程简化了状态与UI的绑定,使得状态变化能够自动触发UI更新,它用于需要复杂状态逻辑和异步操作的场景

缺点:相比于其他状态管理库,学习上手难度较高;

3.4 Redux

优点 :可以了集中式存储、操作和减速器,适用于需要强大可预测性和工具支持的大型应用程序,它的单向数据流和中间件支持使得状态管理变得可预测肯易于测试

缺点:学习成本较高,且需要编写更多的样板代码;

4 BLoC 是什么

(Business Login of Components)是一种设计模式,主要用于将业务逻辑从UI组件中分离出来,这种模式有助于提高代码的可维护性、可测试性以及复用性

  • 业务逻辑组件(Bloc),包含了处理业务逻辑的代码,并且与Ui组件分离,可以响应来自UI的事件,并根据这些事件来更新应用的状态
  • 状态(State): 是应用某一时刻的快照,它可以是任何数据类型。状态的变化会触发UI的更新
  • 事件(Event):事件是UI发送到Bloc的信号,表示了发生了某些事情,例如用户的操作或数据的更新请求
  • 转换器(Converter):转换器是将外部事件转换为内部事件的逻辑,它通常用于处理异步操作,如网络请求或数据库查询;

Flutter一些概念(一)的更多相关文章

  1. Flutter异常监控 - 壹 | 从Zone说起

    开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第3天,点击查看活动详情 如果你正需要处理Flutter异常捕获,那么恭喜你,找对地了,这里从根源上给你准备了Flutter异常捕获 ...

  2. 理解 Flutter 的基础概念:Widget

    Widget 的本意是组件的意思,熟悉 Web 应用开发的人在后期必定会接触到 Vue.React 等框架,这些框架都有一个核心的概念 -- 组件.组件的目的也很简单,那就是重复率用一段代码,并且能够 ...

  3. 【Flutter学习】一些重要的概念之of(context)方法

    在flutter中我们经常会使用到这样的代码 //打开一个新的页面 Navigator.of(context).push //打开Scaffold的Drawer Scaffold.of(context ...

  4. flutter中存储键值对简单数据(相当于前端localstorage概念)

    首先需要安装一个官方推荐包: 1 dependencies: 2 flutter: 3 sdk: flutter 4 shared_preferences: any // 先获取 shared pre ...

  5. 原生应用、Web 应用和混合应用的概念,以及 Flutter 技术是什么

    应用类型 原生应用 原生应用就是使用特定的语言开发的应用,例如 Android 原生应用.Windows 原生应用.iOS 原生应用等.开发 Android 原生应用时,其特定的编程语言为 Java ...

  6. 编写第一个Flutter App(翻译)

    博客搬迁至http://blog.wangjiegulu.com RSS订阅:http://blog.wangjiegulu.com/feed.xml 以下代码 Github 地址:https://g ...

  7. 我花了 8 小时,"掌握"了一下 Flutter | Flutter 中文站上线

    Hi,大家好,我是承香墨影! 距离 Google 在 2018 世界移动大会上发布 Flutter 的 Beta 版本,Flutter 是 Google 用以帮助开发者在 Android 和 iOS ...

  8. Flutter 实现原理及在马蜂窝的跨平台开发实践

    一直以来,跨平台开发都是困扰移动客户端开发的难题. 在马蜂窝旅游 App 很多业务场景里,我们尝试过一些主流的跨平台开发解决方案, 比如 WebView 和 React Native,来提升开发效率和 ...

  9. 【译】使用 Flutter 实现跨平台移动端开发

    作者: Mike Bluestein   | 原文地址:[https://www.smashingmagazine.com/2018/06/google-flutter-mobile-developm ...

  10. 做了2个多月的设计和编码,我梳理了Flutter动态化的方案对比及最佳实现

    背景 在端上为了提升App的灵活性, 快速解决万变的业务需求,开发者们探索了多种解决方案,如PhoneGap ,React Native ,Weex等,但在Flutter生态还没有好的解决方案.未来闲 ...

随机推荐

  1. 需求解决 _按需要对控件进行禁用和解除禁用 _CSS _20210922

    需求解决 _按需要对控件进行禁用和解除禁用 _CSS _20210922 通过JQuery 或者其他方式的选择器 获取DOM节点 再通过一下的方式 设置 disabled属性为 true 即可禁用,为 ...

  2. Go语言学习 _基础04 _Map&Set

    Go语言学习 _基础04 _Map&Set 1.map package map_test import ( "fmt" "testing" ) func ...

  3. 我开源了一个短视频应用(Go+React)|DouTok2.0 项目介绍

    前言 大家好,这里是白泽,拖更了一段时间,抱歉.在 DouTok2.0 可以初步允许大家接入开发之后,这篇文章才得以出炉. DouTok:一个开源的 web 端的短视频应用,采用微服务架构,包含前后端 ...

  4. 量子线路设计:减少CNOT和T门的意义。

    在量子线路的设计中,我们往往希望减少线路中的CNOT门和T门的数目,原因如下: 一般文献宣称减少T门的数量是为了更高效地执行容错量子计算(fault-tolerant quantum computat ...

  5. Excel两张表查重,返回True

    =VLOOKUP(P2,Sheet2!A:A,1,0)=P2 VLOOKUP(A1,Sheet2!A:D,1,0) VLOOKUP--首列查找 A1--查找条件 Sheet2--同一工作簿中的第二工作 ...

  6. 基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现七

    一.前言介绍: 1.1 项目摘要 随着信息技术的迅猛发展和数字化时代的到来,传统文化与现代科技的融合已成为一种趋势.古诗词作为中华民族的文化瑰宝,具有深厚的历史底蕴和独特的艺术魅力.然而,在现代社会中 ...

  7. IPC最新发行了新标准:IPC-A-610J, IPC-J-STD-001J, IPC-7711/21D, IPC-2221C

    IPC最新发行了新标准:IPC-A-610J, IPC-J-STD-001J, IPC-7711/21D, IPC-2221C     2024年伊始,IPC又更新了一些新的标准,大家可以及时去更新了 ...

  8. NASA的食物计划

    NASA的食物计划 题目传送门 题目告诉我们要在体积和重量都不超过的情况下输出最大卡路里,稍微思考一下就可以发现这题是一道01背包的变形题(01背包不会的点这里). 并且01背包需要空间优化. 那我们 ...

  9. ArcGIS填补面图层的细小空白并删除主体部分外的零散部分

      本文介绍在ArcMap软件中,基于消除面部件("Eliminate Polygon Part")工具,对矢量面要素的零碎.空洞区域加以删除,同时将游离于要素主体之外的部分剔除的 ...

  10. 使用conditional 实现线程精准通讯

    实现3个线程之间依次执行 比如有3个线程A,B,C ,需要按照顺序执行,ABC,ABC 依次执行. 这个使用可以使用 Lock 的 conditional来实现线程之间精准通讯. 点击查看代码 pac ...