我喜欢 Google Flutter

在 Google I/O ’17 上,Google 向我们介绍了 Flutter —— 一款新的用于创建移动应用的开源库。

正如你所想的那样,Flutter 是能够帮助创建拥有漂亮 UI 界面的跨平台移动应用解决方案。Flutter 的界面设计与 web 应用类似,因此,你能够从 Flutter 上找到像使用 HTML/CSS 那样熟悉的感觉。

Google 表示:

Flutter 将会帮你更容易,更快速的开发出界面美观的移动应用。

听起来很美好,但是首先要说的是,我对其他跨平台解决方案,诸如 ?Xamarin,PhoneGap,Ionic,React Native 等并不是很认可。 大家都知道,这些解决方案互有利弊,很难选择。虽然我并不确定 Flutter 是否会与它们有所不同,但是我很期待。

为什么要用 Flutter ?

你可能会好奇,然后问自己一个问题:

Flutter 有什么创新之处?它是如何工作的?与 React Native 有什么不同之处?

我不会在这里讨论技术问题,因为其他人做得更好。如果你对 Flutter 的工作细节感兴趣,我建议你读读这篇文章:Flutter 的革命性创新是什么?你也可以在“ The Magic of Flutter ”演示中查看 Flutter 概念的总结。

简要来说,Flutter 是一个移动 SDK ,允许我们创建混合移动应用(这样你就可以编写一份代码,在 Android 和 iOS 都可以运行这个应用程序)。你在 Dart 中编写代码,这是一种由谷歌开发的语言,如果你以前用过 Java ,那看它会觉得非常熟悉。你不再需要用 XML 文件构建布局树,而是像这样:

import ‘package:flutter/material.dart‘;

class HelloFlutter extends StatelessWidget {  @override
  Widget build(BuildContext context) {    return new MaterialApp(
      title: "HelloFlutter",
      home: new Scaffold(
        appBar: new AppBar(
          title: new Text("HelloFlutter"),
        ),
        body: new Container(
          child: new RaisedButton(onPressed: _handleOnPressed),
        ),
      ),
    );
  }
}

正如你所看到的,布局是由嵌套的组件(小部件)构建的。核心部件是 MaterialApp(这是整个应用程序),然后我们有了 Scaffold (这是主要的布局结构),然后在里面我们有 AppBar(像 Android 工具栏)和一些容器作为主体。在内部,我们将放置布局小部件 —— 文本、按钮等。

#1 热重载

好的,现在就开始吧!

我们从一个基本的应用开始。我们有三个按钮,它们中的每一个都能改变文本的颜色:

现在,我们将会使用其中一个最酷的特性——热重载。它能让你的网页做到立即重建。看看效果:

回顾下我们具体做了什么?我们变更了一些代码(在按钮上的文本),当我们点击“热重载”(在 IntelliJ IDE 的顶部)并且我们能在短时间内就看到结果。是不是很酷炫?

热重载不仅仅快还智能——如果你有一些数据已经被显示(比如说,这个例子中的文本颜色),你可以在应用运行期间使用热重载改变 UI :内容还是一样的。

#2 全套小部件 (Material Design)

Flutter 的另一个优点是,我们有一个非常丰富的内置 UI 组件的目录。里面有两套小部件——?Material Design(针对 Android )和 Cupertino(适用于 iOS )。你可以选择并轻松实现你想要的任何东西。比如说如果想要创建一个新的浮动动作按钮,则可以像下面这样:

更棒的是,你可以在各个平台上实现任意的小部件。而且如果你已经实现了一些 Material Design 或 Cupertino 小部件,那么它在每个 Android 和 iOS 设备上都是一样的。你不需要担心在众多设备上看起来会有什么不同。

#3 所有东西都是一个小部件

正如你在之前的 gif 中所看到的,创建 UI 非常简单。这得感谢 Flutter 的核心原则 —— 所有东西都是一个小部件。你的 app 类是一个小部件(MaterialApp),你的整体布局结构也是一个小部件(Scaffold),所有东西都是一个小部件(AppBarDrawerSnackBar)。想让视图居中?用 Center 就好(cmd/ctrl+Enter)!

有了 Fluter,创建 UI 就像用许多不同的小部件组合布局一样简单。

Flutter 还有另外一个核心原则,组合优先于继承。这意味着,如果你想要创建一些新的部件(widget),则可以使用几个 Widget 组成新的 Widget ,而不是扩展现有的 Widget 类。

#4 Android / iOS 差异化主题

通常,我们希望我们的 Android 应用与 iOS 应用不同,不仅在颜色上,而且在小部件的尺寸和样式上也有差异。在 Flutter 中可以用主题来实现这个目标:

正如你所看到的,我们为工具栏(AppBar)设置了不同的颜色和高度。我们使用的是 Theme.of(Context).platform 参数来适配当前平台(android/ios):

import ‘package:flutter/material.dart‘;

class HelloFlutter extends StatelessWidget {  @override
  Widget build(BuildContext context) {    return new MaterialApp(
        title: "HelloFlutter",
        theme: new ThemeData(
            primaryColor:
                Theme.of(context).platform == TargetPlatform.iOS
                    ? Colors.grey[100]
                    : Colors.blue),
        home: new Scaffold(
          appBar: new AppBar(
            elevation:
                Theme.of(context).platform == TargetPlatform.iOS
                    ? 0.0
                    : 4.0,
            title: new Text(              "HelloFlutter",
            ),
          ),
          body: new Center(child: new Text("Hello Flutter!")),
        ));
  }
}

#5 非常、非常、非常多的资源

虽然 Flutter 依然在 alpha 版,但 Flutter 的开发社区非常庞大而且参与度很高。正因如此 Flutter 才有了很多资源的支持(类库的形式,就像 Android 中的 Gradle 依赖包)。我们有很多诸如开源图形、HTTP 请求、内容分享、存储参数、访问传感器、部署 Firebase 等等多种多样的类库。当然,每个资源包都支持 Android 和 iOS 。Flutter库列表 - Flutter Awesome

如何开始呢?

如果你喜欢 Flutter ,想自己尝试一下,最好的办法就是打开 Google Codelabs :

原文地址:https://www.cnblogs.com/frankhe/p/9782932.html

时间: 2024-10-07 08:28:40

我喜欢 Google Flutter的相关文章

(译) Google Flutter 中的简单状态管理

原文链接 我是如何遇见 Google Flutter的 这对我来这是像往常一样的码代码的一天.我的一个朋友在我们的开发者群组中发了这么一个问题,是否有人尝试过Google Flutter.它想要知道React Native 和 Google Flutter之间的比较.这个问题让我种草了Google Flutter.我之前从没有听过Google Flutter.它是否值得与React Native进行比较,就像AngularJS相较于ReactJS? 我必须承认.我是一个React的迷弟.我已经使

作为Web开发人员,我为什么喜欢Google Chrome浏览器

在Google Chrome浏览器出来之前,我一直使用FireFox,因为FireFox的插件非常丰富,更因为FireFox有强大的Firebug,对于前端开发可谓神器. 在Chrome出来的时候,我就喜欢上它的简洁.快速,无论是启动速度还是页面解析速度还是Javascript执行速度(现在的FireFox4也比之前的FireFox3有很大的进步).不过当时由于Chrome的开发者工具还不是很完善,而我又不是很熟悉,加之对于Firebug的好感和依赖,当时还是用回FireFox作为我的主浏览器.

Facebook的React Native和google的Flutter要成熟些(Facebook的React Native之所以能打败谷歌的原因有7个)

在评估哪个框架最适合您的开发人员用于构建跨平台应用程序时,有很多问题需要回答. 谷歌的Flutter是Facebook的React Native框架的答案,开发人员不断地在哪一个上推动最佳结果.对于开发者来说,这是一个激动人心的时刻,因为两个软件巨头正试图竞争. 对于初创公司而言,创建可以轻松覆盖各种设备上的用户的移动应用程序变得越来越重要,并且使用可以跨这些应用程序和设备转换代码的中央框架对于任何开发团队都很重要. 但是,当您评估哪个框架最适合您的开发人员用于构建跨平台应用程序时,除了Face

Google Chrome浏览器调试功能介绍

作为Web开发人员,我为什么喜欢Google Chrome浏览器 [原文地址:http://www.cnblogs.com/QLeelulu/archive/2011/08/28/2156402.html ] 在Google Chrome浏览器出来之前,我一直使用FireFox,因为FireFox的插件非常丰富,更因为FireFox有强大的Firebug,对于前端开发可谓神器. 在Chrome出来的时候,我就喜欢上它的简洁.快速,无论是启动速度还是页面解析速度还是Javascript执行速度(现

Google Chrome浏览器调试

作为Web开发人员,我为什么喜欢Google Chrome浏览器 [原文地址:http://www.cnblogs.com/QLeelulu/archive/2011/08/28/2156402.html ] 在Google Chrome浏览器出来之前,我一直使用FireFox,因为FireFox的插件非常丰富,更因为FireFox有强大的Firebug,对于前端开发可谓神器. 在Chrome出来的时候,我就喜欢上它的简洁.快速,无论是启动速度还是页面解析速度还是Javascript执行速度(现

Android离Linux越来越遥远了,Google的Android真的是开源的吗?

Linux简介(先简单的介绍一下Linux) Linux是一类Unix计算机操作系统的统称.Linux操作系统的内核的名字也是"Linux".Linux操作系统也是自由软件和开放源代码发展中最著名的例子.严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统. 1994年3月,Linux1.0发布代码量17万行,当时是按照完全自由免费的协议发布,完全自由免费的协议代表着自由,开

Flutter 中文文档网站 flutter.cn 正式发布!

在通常的对 Flutter 介绍中,最耳熟能详的是下面四个特点: 精美 (Beautiful):充分的赋予和发挥设计师的创造力和想象力,让你真正掌控屏幕上的每一个像素. ** 极速 (Fast)**:基于 Skia 的硬件加速图形引擎,帮助你媲美原生应用的速度. 高效 (Productive):Flutter 的 Stateful Hot Reload (热重载) 特性帮助你实时看到应用修改的结果. 开放 (Open):不管是 Flutter 引擎还是 Dart 开发语言,甚至是工程团队的工作空

160830、如何运用最新的技术提升网页速度和性能

最近更新了我们的网站,它是经过了设计上的全面验收的.但实际上,作为软件开发者,我们会注重很多技术相关的零碎的东西.我们的目标是控制性能,注重性能,未来可伸展,为网站增添内容是一种乐趣.接着就来告诉你,为什么我们的网站速度比你们的快吧(抱歉,确实是这样的). 性能设计 在我们的项目中,我们每天都会和设计师和产品负责人讨论关于平衡美观和性能的问题.对于我们自己的网站,这样做是很简单的.简言之,我们认为好的用户体验从快速的内容传输开始,也就意味着 性能 > 美观. 好的内容.布局.图片和交互是吸引用户

冒个泡,还活着??做了个项目,一点感想。

的确,成家后,很多时间都由不得自己安安静静地花时间去学习了.从3月底到7月底,香港.买车.婚礼,很多事情都在今年一起办了. 8月初的时候接到一个项目,做微信定制开发的,由于是兼职,有持续一周的时间,每天晚上和朋友加班到晚上3.4点,第二天又正常上班.而且之前没做过定制开发(甲方要求用户体验高.很多细节的技术还要即时攻尖),虽然很累,但是最后做出来了,而且上线20多天,经过2000人左右的体验,没出什么大问题,已经感到很高兴了. 虽然还有项目尾款没拿到,但还是用之前的钱,为自己换了一台mac pr