热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Hello,Flutter!

昨天Google正式发布了其全新的跨平台UI开发框架Flutter,这个框架从2014年就开始开发,致力于为Google即将发布的FuchsiaOS提供用户界面基础,如今终于发布了

昨天 Google 正式发布了其全新的跨平台 UI 开发框架 Flutter,这个框架从 2014 年就开始开发,致力于为 Google 即将发布的 Fuchsia OS 提供用户界面基础,如今终于发布了一个正式的版本,第一时间尝试了一下。

编译 & 安装

Flutter 没有提供 pre-built 的版本,需要自己从 GitHub 上 clone 下来自己编译。

比较有趣的是,Google 官方 WiKi 中竟然提供了 “Using Flutter in China” 这篇文章,国内的小伙伴在编译之前可以看看 [doge]。

编译的过程很简单,速度也很快,以我的网络状况和硬件状况,拉取仓库 + 安装依赖 + 编译总共耗时不超过 5 分钟,起步的体验很不错。

开发环境

测试用的开发环境我选择了 Intellij IDEA Ultimate Edition,配合 Dart 和 Flutter 插件。

安装好插件之后重启 IDEA,在 New Project 窗口中就可以看到 Flutter 项目的模板了,选择它创建就可以:

《Hello, Flutter!》
《Hello, Flutter!》

创建完项目后第一次编译耗时可能较长,但得益于 Flutter 的 Hot Reload 技术,在之后的开发中即可享受 ⌘S 后立即生效的体验。

我们来看看 Hello World 运行的效果:

《Hello, Flutter!》
《Hello, Flutter!》

第一个 Flutter 程序

由于我也是第一次接触这个框架,所以只能写一个很简单的程序:

import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(
home: new Scaffold(
appBar: new AppBar(
backgroundColor: const Color(0xff333333),
title: const Text('Home'),
),
body: new Center(
child: const Text('Hello, Flutter!'),
),
),
));
}

在解释这段代码之前要提醒一下大家,如果想使用 Hot Reload 技术,你的代码修改不能动 main 函数,因为 main 函数所在的 module 不能热加载。

然后 Dart 中有一个 const 关键字,它的意思是创建一个不可变的对象,代码中所出现的

const Color(0xff333333)

意为创建一个不可变的 Color 对象,也就是说这个对象的任何内部变量都不可变,用这个关键字可以来让编译器优化代码性能。

Flutter 的思路颇似 React,框架通过构建 Widget Tree,在每次变更时对比前后状态,然后更新视图。runApp 函数则是用给定 Widget 来与屏幕正在显示的视图进行对比,然后更新有差异的部分。

这段代码的效果图:

《Hello, Flutter!》
《Hello, Flutter!》

好吧,这是一篇失败的文章

从未接触过 Flutter 的天真的我本打算边研究边写文章,结果发现这个框架跟我想象中的差异还是很大的,有很多 Concepts 要去了解,好在文档还比较全,不说了,看文档去了。

逃)


推荐阅读
  • 先上图引入插件在pubspec.yaml中引入charts_flutter插件使用的时候版本到0.6.0,插件地址:https:github.comgooglecharts使用插件 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
author-avatar
重新生活好吗
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有