Flutter一些概念(一)
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一些概念(一)的更多相关文章
- Flutter异常监控 - 壹 | 从Zone说起
开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第3天,点击查看活动详情 如果你正需要处理Flutter异常捕获,那么恭喜你,找对地了,这里从根源上给你准备了Flutter异常捕获 ...
- 理解 Flutter 的基础概念:Widget
Widget 的本意是组件的意思,熟悉 Web 应用开发的人在后期必定会接触到 Vue.React 等框架,这些框架都有一个核心的概念 -- 组件.组件的目的也很简单,那就是重复率用一段代码,并且能够 ...
- 【Flutter学习】一些重要的概念之of(context)方法
在flutter中我们经常会使用到这样的代码 //打开一个新的页面 Navigator.of(context).push //打开Scaffold的Drawer Scaffold.of(context ...
- flutter中存储键值对简单数据(相当于前端localstorage概念)
首先需要安装一个官方推荐包: 1 dependencies: 2 flutter: 3 sdk: flutter 4 shared_preferences: any // 先获取 shared pre ...
- 原生应用、Web 应用和混合应用的概念,以及 Flutter 技术是什么
应用类型 原生应用 原生应用就是使用特定的语言开发的应用,例如 Android 原生应用.Windows 原生应用.iOS 原生应用等.开发 Android 原生应用时,其特定的编程语言为 Java ...
- 编写第一个Flutter App(翻译)
博客搬迁至http://blog.wangjiegulu.com RSS订阅:http://blog.wangjiegulu.com/feed.xml 以下代码 Github 地址:https://g ...
- 我花了 8 小时,"掌握"了一下 Flutter | Flutter 中文站上线
Hi,大家好,我是承香墨影! 距离 Google 在 2018 世界移动大会上发布 Flutter 的 Beta 版本,Flutter 是 Google 用以帮助开发者在 Android 和 iOS ...
- Flutter 实现原理及在马蜂窝的跨平台开发实践
一直以来,跨平台开发都是困扰移动客户端开发的难题. 在马蜂窝旅游 App 很多业务场景里,我们尝试过一些主流的跨平台开发解决方案, 比如 WebView 和 React Native,来提升开发效率和 ...
- 【译】使用 Flutter 实现跨平台移动端开发
作者: Mike Bluestein | 原文地址:[https://www.smashingmagazine.com/2018/06/google-flutter-mobile-developm ...
- 做了2个多月的设计和编码,我梳理了Flutter动态化的方案对比及最佳实现
背景 在端上为了提升App的灵活性, 快速解决万变的业务需求,开发者们探索了多种解决方案,如PhoneGap ,React Native ,Weex等,但在Flutter生态还没有好的解决方案.未来闲 ...
随机推荐
- jeecg平台相关01-vue2迁移到vue3
01-vue2迁移到vue3 嵌套: datasource: master: url: jdbc:mysql://127.0.0.1:3306/jeecg-boot-vue3?characterEnc ...
- 基于Material Design风格开源、免费的WinForms UI控件库
前言 今天大姚给大家分享一个基于 Google 的 Material Design 风格开源.免费的.NET WinForms UI控件库:MaterialSkin. WinForms介绍 WinFo ...
- WebDriver常用属性和方法
除了上一篇的元素定位方法,Selenium中的WebDriver类中还有一些常用的属性和方法 一.常用的属性 1.下表列出了WebDriver的常用属性 # 属性 属性描述 用途 1 driver.n ...
- Linux设置显示中文和设置字体
设置中文 一.查看当前使用的系统语言 1.登陆linux系统打开操作终端之后,输入 echo $LANG可以查看当前使用的系统语言.如 echo $LANG 2.查看安装的语言包 查看是否有中文语言包 ...
- 关于MySQL表设计,测试人员可以关注哪些点
测试人员关注数据库表设计是"测试左移"的一种手段,可以把有关数据库的潜在bug消灭在系统测试之前,从而提高交付效率. 以MySQL为例,QA可从以下方面对数据库表设计做测试的左移: ...
- 小米R3G刷了padavan后时间不同步和定时关闭外网(wan)端口
怎么刷openwrt或者padavan请见我2022年3月份的帖子 https://www.cnblogs.com/jar/p/15954037.html 最近遇到个新环境,遂拿出来用用 有1个问题和 ...
- Linux系统部署Jmeter环境
1.Linu安装Java环境 Jmeter是Java开发的,需要依赖JDK环境,因此我们需提前安装好JDK,安装地址:https://www.oracle.com/technetwork/java/j ...
- 源码剖析之sun.misc.Unsafe
首先介绍一下什么是Compare And Swap(CAS)?简单的说就是比较并交换. CAS 操作包含三个操作数 -- 内存位置(V).预期原值(A)和新值(B).如果内存位置的值与预期原值相匹配, ...
- Eclipse JDT--AST入门
最近做program analysis,需要解析Java的源代码,于是就去看了看Abstract Syntax Tree(AST,中文为抽象语法树).有点无奈的是,网上关于这方面的资料比我想象中的少, ...
- 关于XML文档和JAVA中的JTree之间如何转换的问题
关于XML文档和JAVA中的JTree之间如何转换的问题 XML因为良好的结构,被广泛地应用于文档格式的定义.我们知道,应用软件一般需要用配置文件来决定运行时的一些 参数.以前的应用程序的配置文件一般 ...