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生态还没有好的解决方案.未来闲 ...
随机推荐
- Linux 基础-查看进程命令 ps 和 top
目录 1,使用 ps 命令找出 CPU 占用高的进程 2,通过 top 命令定位占用 cpu 高的进程 3,htop 系统监控与进程管理软件 4,参考资料 1,使用 ps 命令找出 CPU 占用高的进 ...
- 初识GO语言--错误处理
- Python运行报错:ImportError: cannot import name 'BinarySpaceToDiscreteSpaceEnv' from 'nes_py.wrappers'
运行Python项目: https://pypi.org/project/gym-super-mario-bros/ 报错: ImportError: cannot import name 'Bina ...
- Java垃圾回收器总结
什么是Java垃圾回收器 Java垃圾回收器是Java虚拟机(JVM)的三个重要模块(另外两个是解释器和多线程机制)之一,为应用程序提供内存的自动分配(Memory Allocation).自动回收( ...
- JAVA并发编程学习笔记之CLH队列锁
NUMA与SMP SMP(Symmetric Multi-Processor),即对称多处理器结构,指服务器中多个CPU对称工作,每个CPU访问内存地址所需时间相同.其主要特征是共享,包含对CPU,内 ...
- golang定时器之timer+ticker
转载: https://juejin.cn/post/7327157426298011663 Timer 是一个一次性的定时器,用于在未来的某一时刻执行一次操作. 基本使用 创建 Timer 定时器的 ...
- brew之加速
有没有出现这种场景:使用brew install 安装程序,一直卡在brew updating,这可能是使用着默认的github镜像源导致,那么我们就需要将其切换到国内 1.镜像切换(推荐中科大) 1 ...
- Win10多用户同时登陆
1. 说明: (1)Win服务器版默认是支持多用户登陆的,甚至可以在主机上用不同用户自己远程登陆自己,如window server 2016. (2)Win10正常情况下是不允许用户同时远程的,即一个 ...
- 下列哪个选项是对MTU的正确计算方式?
A. IP数据包头部 + TCP数据报头部 + 数据 B. MAC头 + IP头 + TCP头 + 数据 C. MAC头 + IP头 + TCP头 + 数据 + FCS D. 前同步码 ...
- VTK 9.2 Qt 5.14 安装及错误处理
参考VTK9.1.0在Windows10+VS2019+Qt 5.15.2环境下编译安装以及VTK应用于QT_vtk-qt安装包_isongxw的博客-CSDN博客 安装注意:编译release和de ...