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

    文章

    3886

    浏览量

    126127
  • iOS
    iOS
    +关注

    关注

    8

    文章

    3359

    浏览量

    149544
  • ui
    ui
    +关注

    关注

    0

    文章

    201

    浏览量

    21258
收藏 人收藏

    评论

    相关推荐

    Flutter首次亮相Google Cloud Next大会

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

    浅谈兼容 OpenHarmony 的 Flutter

    OpenHarmony SIG 组织在 Gitee 开源了兼容 OpenHarmony 的 Flutter。该组织主要用于孵化 OpenHarmony 相关的开源生态项目。     ▲ 仓库地址
    的头像 发表于 02-02 15:22 355次阅读
    浅谈兼容 OpenHarmony 的 <b class='flag-5'>Flutter</b>

    了解 Flutter 3.16 功能更新

    作者 / Kevin Chisholm 我们在季度 Flutter 稳定版发布会上带来了 Flutter 3.16,此版本包含诸多更新: Material 3 成为新的默认主题、为 Android
    的头像 发表于 12-16 15:55 544次阅读
    了解 <b class='flag-5'>Flutter</b> 3.16 功能更新

    我们为什么需要了解一些先进封装?

    我们为什么需要了解一些先进封装?
    的头像 发表于 11-23 16:32 400次阅读
    我们为什么需要了解<b class='flag-5'>一些</b>先进封装?

    分享一些SystemVerilog的coding guideline

    本文分享一些SystemVerilog的coding guideline。
    的头像 发表于 11-22 09:17 424次阅读
    分享<b class='flag-5'>一些</b>SystemVerilog的coding  guideline

    针对RF PCBA设计的一些建议

    射频(RF)PCBA设计涉及系列复杂的考虑因素,包括天线设计、滤波器设计以及传输线(RF Trace)的优化。这些因素对于无线通信和射频应用的性能至关重要。以下是针对RF PCBA设计的一些建议。
    的头像 发表于 10-30 10:19 268次阅读

    单片机“低耦合”的一些方法

    单片机“低耦合”的一些方法
    的头像 发表于 10-17 18:30 345次阅读

    gvim中常用的一些指令介绍

    在 Vim 编辑器中,有一些常用的指令可以帮助我们更高效地编辑文本。以下是一些在 gvim 中常用的指令
    的头像 发表于 10-10 15:47 1184次阅读

    分享一些数据采集的资料

    分享最近在学的数据采集的一些资料2
    发表于 08-21 10:36 2次下载

    Flutter应用代码混淆优化防护的常见问题与解决方案

    分析flutter应用很依赖反编译工具转储的dart文件中的信息,可以在开发flutter的过程中开启混淆,能有效防止静态分析。
    的头像 发表于 08-12 11:11 1807次阅读

    介绍一些实用的Linux命令

    作为名软件开发人员,掌握 Linux 命令是必不可少的技能。即使你使用 Windows 或 macOS,你总会遇到需要使用 Linux 命令的场合。例如,大多数 Docker 镜像都基于 Linux 系统。要进行 DevOps 工作,你需要熟悉Linux,至少要了解一些
    发表于 08-01 16:12 233次阅读
    介绍<b class='flag-5'>一些</b>实用的Linux命令

    【今晚开播】社区说 | 精益求精: Flutter 技巧专题篇

    定不会错过! 活动时间 7 月 27 日 (今天) 19:00 - 21:00 活动安排 19:00 - 19:10 活动介绍 19:10 - 20:55  主题分享 郭树煜: Flutter 知半解
    的头像 发表于 07-27 17:40 324次阅读
    【今晚开播】社区说 | 精益求精: <b class='flag-5'>Flutter</b> 技巧专题篇

    AP3406A的一些应用程序提示

    电子发烧友网站提供《AP3406A的一些应用程序提示.pdf》资料免费下载
    发表于 07-26 10:42 0次下载
    AP3406A的<b class='flag-5'>一些</b>应用程序提示

    社区说 | 精益求精: Flutter 技巧专题篇

    上的你定不会错过! 活动时间 7 月 27 日 (周四) 19:00 - 21:00 活动安排 19:00 - 19:10 活动介绍 19:10 - 20:55  主题分享 郭树煜: Flutter 知半
    的头像 发表于 07-25 17:45 343次阅读
    社区说 | 精益求精: <b class='flag-5'>Flutter</b> 技巧专题篇

    AP3406的一些应用提示

    电子发烧友网站提供《AP3406的一些应用提示.pdf》资料免费下载
    发表于 07-24 10:55 0次下载
    AP3406的<b class='flag-5'>一些</b>应用提示