0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Flutter的一些技巧

ss 来源:shusheng007 作者:shusheng007 2021-02-12 11:46 次阅读

文章目录

前言

转变思维

命令式

声明式

结论

总结

前言

Flutter 近两年在江湖上崛起的非常迅猛,业已成为移动开发中不的不重视的一股力量。如果你是一个有追求的IOS/Android程序员,我想你非常有必要尝试一下。

我接触Android开发也有几年了,前段时间公司大力推广Flutter技术,所以有幸尝试了一下。本人一直信奉善于总结是不断进步的不二法宝,这样你才能不断的超越同行,不被裁员,所以在此准备以切身体验提供一些快速掌握Flutter的一些技巧。

转变思维

其实移动开发者学习Flutter,最关键的就是要转变思维。

众所周知,Flutter的定位是一套跨平台的UI工具箱,所以UI是学习Flutter的主要矛盾。下面是官方定义:

Flutter is Google’s UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a single codebase

Flutter的UI设计采用的是声明式的风格,而Android/Ios采用的是命令式风格。 由于我们习惯了命令式风格,突然转向Flutter的话,总是会以命令式的思维去思考,会遇到较大麻烦。只要转变了思维,对于一个有经验的Android/Ios开发者而言,Flutter就变得非常简单了。那么什么是声明式风格?什么又是命令式风格呢?多说无益,实例走起…

假设现在有一个很简单的需求: UI上有个方块,要求根据不同的情形展示不同的颜色,如下图所示:

下面我们分别用命令式与声明式实现上面的需求,看看有什么区别

命令式

上面的伪代码展示了,不同条件下,我们通过调用View对象的方法setColor来修改其颜色属性,从而达到改变其颜色的需求。

可见,命令式是通过修改UI对象的状态来达到改变UI显示样式的,这就意味着此UI对象必须是可变的,这就要求开发者负责维护这些UI对象的状态。

声明式

上面的伪代码展示了,不同的条件下,我们构建新的颜色不一样的View对象来实现改变其颜色的需求。

可见,声明式可以使View对象为不可变对象,每次改变UI都是构建一个新的UI对象,而不是去修改其属性。

结论

所以在使用Flutter构建UI时千万不要想着去修改UI对象的状态(属性),如果UI状态变了,例如Textview的内容从I love android 变成了I love flutter, 不要想着调用Textview对象的方法去修改其文本,而是要以I love flutter为文本去构建一个新的Textview对象。剩下的就交给Flutter框架吧,其会帮你重新渲染那些必要的部分。

在Flutter中状态和UI(Widget)是分开的,当我们要刷新UI的时候,只需要准备好状态,然后Flutter框架就会使用这些新的状态重新构建新的Widget。

让我们通过一个实例感受一下

下面的代码,构建了如下一个非常简单的页面,由于我们isLoveAndroid为true,所以Flutter就为我们构建了一个展示I love Android的Text控件。

总结

只要转变了思维,在使用Flutter搭建UI的时候就会显得很顺畅,特别是设计复杂UI的时候,不会进入死胡同。

责任编辑:xj

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Android
    +关注

    关注

    12

    文章

    3946

    浏览量

    128066
  • iOS
    iOS
    +关注

    关注

    8

    文章

    3399

    浏览量

    151106
  • ui
    ui
    +关注

    关注

    0

    文章

    205

    浏览量

    21438
收藏 人收藏

    评论

    相关推荐

    鸿蒙Flutter实战:14-现有Flutter 项目支持鸿蒙 II

    引言 在之前的文章鸿蒙Flutter实战:09-现有Flutter项目支持鸿蒙中,介绍了如何改造项目,适配鸿蒙平台。 文中讲述了整体的理念和思路,本文更进步,结合可实操的项目代码,详细说明如何实施
    发表于 12-26 14:59

    一些常见的动态电路

    无论是模电还是数电,理论知识相对来说还是比较枯燥,各种电路原理理解清楚不算容易,换种生动形象的方式或许会增加一些趣味性,也更容易理解这些知识。下面整理了一些常见的电路,以动态图形的方式展示。 整流
    的头像 发表于 11-16 09:26 531次阅读
    <b class='flag-5'>一些</b>常见的动态电路

    分享一些常见的电路

    理解模电和数电的电路原理对于初学者来说可能比较困难,但通过一些生动的教学方法和资源,可以有效地提高学习兴趣和理解能力。 下面整理了一些常见的电路,以动态图形的方式展示。 整流电路 单相桥式整流
    的头像 发表于 11-13 09:28 441次阅读
    分享<b class='flag-5'>一些</b>常见的电路

    鸿蒙Flutter实战:12-使用模拟器开发调试

    前提 开发电脑需为M系列芯片 (ARM架构) 的 Mac 电脑 目前 Flutter 鸿蒙开发,无法使用 X86 架构的模拟器,只能使用 ARM 架构的模拟器** 创建项目 等开发环境搭建
    发表于 11-10 13:13

    鸿蒙Flutter实战:11-使用 Flutter SDK 3.22.0

    创建了条配置 flutter sdk 的项目: \"dart.flutterSdkPath\": \".fvm/versions/custom_3.22.0\"
    发表于 11-01 15:03

    鸿蒙Flutter实战:10-常见问题集合

    # 鸿蒙Flutter实战:10-常见问题集合 ## 1. 学习路径应该是怎样的,需要掌握哪些技术才具备鸿蒙 Flutter 开发能力 1.1 学习和掌握 Flutter 开发技术,这块需要
    发表于 10-23 17:05

    鸿蒙Flutter实战:09-现有Flutter项目支持鸿蒙

    ,主要为项目的一些特定配置,如主题、路由等,以及App入口初始化配置。 编辑 pubspec.yaml 文件,添加组件和模块依赖。 environment: sdk: \'>=2.19.6
    发表于 10-23 16:36

    鸿蒙Flutter实战:08-如何调试代码

    个是 Attach 模式,个是普通的运行模式。 3.查看日志 查看日志,可以在运行Flutter处的IDE调试控制台查看 Flutter 项目日志,可以使用 hdc hilog 命令或DevEco 查看系统日志
    发表于 10-23 16:29

    鸿蒙Flutter实战:07混合开发

    已经跑通,但仍然存在一些潜在的坑需要解决和处理,欢迎大家起分享交流 小助手: 备注:鸿蒙Flutter wx:zacksleo
    发表于 10-23 16:00

    鸿蒙Flutter实战:06-使用ArkTs开发Flutter鸿蒙插件

    # 使用 ArkTs 开发 Flutter 鸿蒙平台插件 本文讲述如何开发Flutter 鸿蒙插件,如何实现 Flutter 与鸿蒙的混合开发,以及双端消息通信。 ##
    发表于 10-22 21:56

    鸿蒙Flutter实战:05-使用第三方插件

    # 鸿蒙Flutter 实战:使用第三方插件 在鸿蒙Flutter开发中,如果涉及到使用原生功能,就要使用插件。使用插件有两种方式,种是自己编写原生ArkTS代码,在Dart侧调用。另外
    发表于 10-22 21:54

    鸿蒙Flutter实战:02-Windows环境搭建踩坑指南

    环境搭建 1. 下载Flutter SDK,配置环境变量 鸿蒙 Flutter SDK 需要在 Gitee 下载。目前建议下载 dev 分支代码。 需要配置以下用户变量 注意鸿蒙开发需要安装Java
    发表于 10-22 15:05

    鸿蒙Flutter实战:01-搭建开发环境

    \'*\' 案例 Webview集成 Flutter 鸿蒙交流群 【flutter鸿蒙技术交流群】 目前 Flutter 鸿蒙已经跑通,但仍然存在一些潜在的坑需要解决和处理,欢迎大
    发表于 10-21 19:35

    LED驱动器应用的一些指南和技巧

    电子发烧友网站提供《LED驱动器应用的一些指南和技巧.pdf》资料免费下载
    发表于 09-25 11:35 0次下载
    LED驱动器应用的<b class='flag-5'>一些</b>指南和技巧

    Flutter首次亮相Google Cloud Next大会

    Flutter 团队在近期首次参加了 Google Cloud Next 大会,这意味着 Flutter 在开发社区中的影响力正在日益增长。
    的头像 发表于 05-09 10:15 538次阅读