Flutter教程(一)Flutter概览

作者: 我是吸血鬼 | 来源:发表于2018-03-06 22:27 被阅读2152次

    Flutter官网点击访问
    Flutter教程(一)Flutter概览
    Flutter教程(二)Flutter安装及运行
    Flutter如何引用第三方库并使用

    作为2018世界移动大会的内容之一,Google发布了Flutter的第一个 beta 版本。Flutter 是 Google 用以帮助开发者在 iOS 和 Android 两个平台开发高质量的原生应用的全新移动 UI 框架。现在就可以去 flutter.io快速上手开发精美的原生应用。

    首先我们要理解什么是跨平台。

    什么是跨平台?如果你是移动开发者的话,应该知道 Android 是使用 Java\Kotlin 语言来开发而 iOS 则是 OC\Swift来开发。各大科技圈大佬们都在绞尽脑汁的想统一这两个平台,无论 Android 还是 iOS 都是移动端,若能统一用一套语言开发应用那最好不过的。这也正是跨平台的意思,简单的说就是你写的同一套代码可以运行在不同的平台。不仅能够大大加快开发的进度,同时也能减少人力成本的投入。

    Flutter就是在这种理念中诞生出的跨平台框架。

    Flutter 的目标是解决移动开发中的两个重要问题

    1. 实现原生应用的性能和与平台的集成
    2. 提供一个多平台,可移植的 UI 工具包来支持高效的应用开发。

    Flutter与ReactNative的区别?

    一个是 Facebook 推出两年多的 ReactNative ,另一个则是 Google 这种顶级科技公司的产品Flutter。那么它们有什么区别呢?

    看过ReactNative源码的朋友都应该知道,RN中的组件都继承自Native View组件。例如:ReactNative 中的 ListView 在 Android 中就是继承自 ListView ,还有 RecycleView。

    而Flutter则不同,它的所有 UI 组件都是一帧一帧画出来的。这样能够很准确并且很灵活的做出你想要的 UI 。

    Flutter 使用 Dart语言开发而 ReactNative 则使用 JS 结合 XML 来开发的。

    估计说道Dart语言,很多朋友都不知道。其实,我也是刚刚知道。。。

    下面就说道说道Dart语言。

    基于Dart语言开发的Flutter框架

    dart语言是由谷歌公司开发的网络编程语言,于2011年10月10日发布。谷歌2010年内部备忘录显示,Dart的目标就是要代替JavaScript网络开发通用语言的地位。

    然而,那么多年过去了。。。今天却以这种方式出现

    先来看段代码

    class _MyHomePageState extends State<MyHomePage> {
      int _counter = 0;
    
      void _incrementCounter() {
        setState(() {
          _counter++;
        });
      }
    
      @override
      Widget build(BuildContext context) {
        return new Scaffold(
          appBar: new AppBar(
            title: new Text(widget.title),
          ),
          body: new Center(
            child: new Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                new Text(
                  'You have pushed the button this many times:',
                ),
                new Text(
                  '$_counter',
                  style: Theme.of(context).textTheme.display1,
                ),
                new Image.network(
                  'https://raw.githubusercontent.com/flutter/website/master/_includes/code/layout/lakes/images/lake.jpg',
                )
              ],
            ),
          ),
          persistentFooterButtons: <Widget>[new FloatingActionButton(
            onPressed: _incrementCounter,
            tooltip: 'Increment',
            child: new Icon(Icons.add),
          ) ]
          ,
          floatingActionButton: new FloatingActionButton(
            onPressed: _incrementCounter,
            tooltip: 'Increment',
            child: new Icon(Icons.add),
          ), // This trailing comma makes auto-formatting nicer for build methods.
    
        );
      }
    }
    

    是不是还在各种括号和嵌套中魂牵梦绕呢?

    直观感受就是没有RN写起来那么简洁明了。

    在知乎上看到的一个真实的段子

    为什么Flutter 用 Dart 开发在会后,我也主动的去找 Flutter 的开发专家 Divod 聊了会。我问到他一个问题,我说为什么你们会选择用 Dart 语言来开发而不选择用XML 和 JS ,从刚才您的代码示例上我的第一感觉就是没有 ReactNative 的可读性高。大家也许觉得我太大胆,在 Google 的场子提 Facebook 的东西。但技术毕竟是技术,程序员何苦为难程序员,这是一场技术的交流。最后,他也给了我一个满意和无力反驳的答案,“因为 Dart 的开发团队就在他们旁边,他们能给到我们很快的支持。我们能很快沟通到”。所以我也就默认了 Flutter 注定会一直使用 Dart 这门语言。

    Flutter的优点

    1. 跨平台的优点不必多说
    2. Flutter默认Meteria UI,开发起来贼溜
    3. hot reload的开发模式非常方便,基本上做到实时查看改变的UI
    4. 将来发布的 Fuchsia OS 就钦定了 Flutter 作为 UI Toolkit
    5. 从性能上来讲,Flutter是加分的。

    Flutter的缺点

    1. 使用Dart开发容易造火箭🚀
    2. 目前处于beta版本,商业化的话还需要再等等。。。鬼知道什么时候
    3. 对于IOS UIKit来说,Flutter Meterial Design还不能取代之,只能作为一种补充。
    4. 在Android 平台上,一个架构的SO居然要7M左右,简直不能忍。

    对于Flutter我还是持乐观态度的,但是就看Google努力否了。如果能像Tensorflow或者Golang那样流行就好了。想玩的童鞋可以持续关注Flutter的动向,如果想要运用到商业项目上还是等等吧。

    相关文章

      网友评论

      • Metros:个人开发者的加分项,学着有朝一日能派上用场
      • 小豪丶:国内跟进的速度应该不会太快,而且ios有它自己的一套风格。

        现在都是安卓一套界面,ios一套界面,如果跨平台,ui风格以哪个为标准?这个问题可能会阻碍Flutter的推广
        凯撒网络研究院:现在开发都是只有一套UI,一般UI图都只有IOS的。
        小豪丶:@我是吸血鬼 嗯嗯,对于个人开发者来说还是不错的,可以不需要专门学ios
        我是吸血鬼:第一 Flutter的是否能够提供较高的开发效率,以及更少的坑
        第二 看社区,如果社区能够发展起来会有很大的推动力

      本文标题:Flutter教程(一)Flutter概览

      本文链接:https://www.haomeiwen.com/subject/lthdfftx.html