精华内容
下载资源
问答
  • Dart语言中文教程.pdf

    2019-09-05 14:59:06
    Dart语言中文教程
  • Dart是Google公司发布的网络编程语言,其诞生的目的是为了让广大C类OOP程序员们克服JavaScript那”复杂”的语言特性. 众所周知,JavaScript虽然是OOP语言,但其OOP特性是基于原型链(Prototype)实现的,这与传统的OOP...

    转自:https://www.blackglory.me/straightforward-dart/

     

    Dart是Google公司发布的网络编程语言,其诞生的目的是为了让广大C类OOP程序员们克服JavaScript那”复杂”的语言特性.

    众所周知,JavaScript虽然是OOP语言,但其OOP特性是基于原型链(Prototype)实现的,这与传统的OOP实现方式大相径庭,导致了部分程序员的学习困难.

    然而Dart使用了更贴近传统的实现方式,内含class等常用关键字,降低了学习成本.

    有了Dart,你可用的网页脚本将不只是JavaScript专属.

    在使用Chromium的浏览器中,你可以直接运行Dart程序,而且有可靠的虚拟机帮助你提升程序性能和安全性.

    即使你的浏览器不支持Dart语言,Dart也可以被转换为JavaScript代码,也不必再担心兼容上的问题.

    同时,Dart还可以用来编写桌面应用程序,这很像JavaScript的Node.js,相信Dart在日渐完善后能成为强大的语言.

    接下来我将在这个博客更新Dart的入门教程,如果在你看到这篇文章的时候Dart语言已经流行,希望我描述的概念不会与那时有太大差距.

    文章中出现的笔误和概念错误请在评论中指出,万分感谢.

    目录请转向专页.

    转载于:https://www.cnblogs.com/zhuwenlubin/p/5182792.html

    展开全文
  • Dart学习

    2020-07-10 23:56:30
    高效 Dart 语言指南 Dart 编程语言中文Dart语言——45分钟快速入门 Dart语言速览 Dart语言教程
    展开全文
  • 在上一篇教程中说了Flutter使用Dart语言开发。本篇教程整体介绍一下Dart语言,注意,本篇不会介绍Dart具体...注:如果你想快速的了解Dart以进行Flutter开发,Flutter中文网有一个Dart语言的资源列表 ,按照顺序看一...

    在上一篇教程中说了Flutter使用Dart语言开发。本篇教程整体介绍一下Dart语言,注意,本篇不会介绍Dart具体语法细节,也不会介绍Dart VM、dart2js,因为这些和Flutter无关。本文会从Flutter开发角度介绍一下Dart语言特点、生态、未来三个方面。

    注:如果你想快速的了解Dart以进行Flutter开发,Flutter中文网有一个Dart语言的资源列表 ,按照顺序看一遍,相信你就可以直接上手了。

    Dart语言特点

    首先我们看看为什么Flutter会选择Dart作为开发语言,下面是官方给出的理由:

    Flutter在四个主要维度进行了评估,并考虑了框架作者、开发人员和最终用户的需求等因素。我们发现不同的语言在不同的层面符合一部分需求,但Dart在所有评估维度上得分都很高,并且符合我们的所有要求和标准。

    Dart运行时和编译器支持Flutter的两个关键特性的组合:基于JIT的快速开发周期:允许使用类型的语言进行形状更改和有状态的热重载;以及AOT编译器,可生成高效的ARM代码,可以快速启动并拥有可预测的生产部署性能。

    此外,我们有机会与Dart社区密切合作,Dart社区正在积极投入资源改进Dart在Flutter中的使用。例如,当我们采用Dart时,该语言没有提供生成原生二进制文件的工具链(这对于实现可预测的高性能是很有帮助的),但是现在实现了,因为Dart团队为Flutter构建了它。同样,Dart VM之前已经针对吞吐量进行了优化,但团队现在正在优化VM的延迟时间,这对于Flutter的工作负载更为重要。

    Dart在以下主要标准上得到高分:

    • 开发人员的效率。Flutter的主要价值主张之一是通过让开发人员使用相同的代码库为iOS和Android创建应用程序,从而节省了工程资源。使用高效的语言可以进一步加速开发周期,并使Flutter更具吸引力。这对我们的framework团队和开发人员都非常重要。大部分Flutter功能都是用Dart实现,因此我们需要在10万行代码时能保持高效的而不会牺牲framework和widget的可读性。
    • 面向对象。虽然我们可以使用非面向对象的语言,但这意味着要重新解决几个难题。另外,绝大多数开发人员都具有面向对象开发的经验,因此更容易学习如何使用Flutter进行开发。
    • 可预测,高性能。借助Flutter,我们希望使开发人员能够快速创建流畅的用户体验。为了实现这一点,我们需要能够在每个动画帧中运行大量的代码。这意味着我们需要一种既能提供高性能又能提供可预测性能的语言,而不会出现会导致丢帧的周期性暂停。
    • 快速内存分配。Flutter框架使用函数式流,它很大程度上依赖于底层的内存分配器,从而有效地处理小的、短期的内存分配会非常重要,所以在缺乏此功能的语言中Flutter无法有效地工作。

    综上所述,主要的信息就是Dart在flutter中没有VM,可以直接通过AOT编译器编译成本地代码,并且内存管理比较适合Flutter. 上面是官方说法,下面说些个人看法:从笔者对Dart的使用来看,Dart的设计目标应该是既对标Java,也对标Javascript。

    Dart vs Java

    先看看 Dart和Java,客观的来讲,Dart语法层面确实比Java更有表现力,在VM层面,Dart VM在内存回收和吞吐量都进行了优化,但具体的性能对比,笔者没有找到相关测试数据,但是在我看来只要Dart语言能流行,vm的性能就不用担心,毕竟Google在go(没用vm但有GC)、javascript(v8)、dalvik(android上的java vm)上已经有了很多积累,值得注意的是Dart在flutter中已经可以将gc做到10ms以内,所以Dart和Java相比,决胜因素并不会是在性能方面,而语法层面,Dart要比java更有表现力,最重要的是Dart对函数式编程支持要远强于java(目前只停留在lamda表达式),而Dart不足的是生态,这会在下文讨论。

    Dart vs JavaScript

    JavaScript的弱类型一直被抓短,所以typeScript、coffeescript甚至是facebook的flow(虽然不是javascript的一个超集,但也通过标注和打包工具提供了静态类型检查)才有市场。其实在笔者看来,目前最强大的动态化最好的脚本语言就是javascript,支持动态扩展属性、创建函数等,用起来超爽。但是你可能听过另一个声音,javascript的强大的动态化是把双刃剑,毕竟有些人总是对自己写的代码不放心,他们期望有一套静态类型检查系统来帮助自己减少错误,而Dart就有静态类型检查(Dart2.0后加入了动态类型检查,这在最新版的flutter中已经启用了),并且可以通过dart2js将dart代码转成js代码,在这个层面来说,Dart和typeScript、coffeescript是差不多的,所以单独来看,dart并不比typeScript、coffeescript有什么明显优势,但综合起来看,dart既能进行服务端脚本、APP开发、web开发,这就有优势了。

    Flutter中的Dart

    Flutter能够运行大多数不会直接或间接导入dart:mirrors 或 dart:html的dart代码。Flutter中dart代码会通过AOT编译器编译成本地代码,没有vm,并且dart团队专门针对flutter进行了优化。

    Dart生态

    一个语言的成败,重要的一点还是在于生态。而生态的好坏,有两个主要指标:第三方库的数量和开发者数量。

    Dart目前第三方库还是较少,并且有质量不高,即使是Dart SDK,里面也有很多bug,dart-sdk github现在打开的issue一直维持在5000左右,在最近10天内,我提过一个P0 bug和多个features,由此可见Dart目前还是不怎么完善。 但值得庆幸的是,目前Dart更新迭代快了很多,这是受flutter和Fuchsia的带动。

    至于开发者,目前大多数dart使用者是flutter用户,用dart 写服务端脚本的应该非常少,毕竟现在在dart社区没有一个比较著名或经过时间验证的web server框架。从stackoverflow上dart相关的问题来看,用dart 开发js的开发者也有一些,但大概估计不会超过dart开发者的20%。

    Flutter中文社区贡献

    Flutter中文网发起了一个开源项目计划,旨在开发一系列Flutter SDK之外常用(实用)的Package、插件,以丰富Flutter第三方库,为Flutter生态贡献来自中国开发者的力量, 目前社区已有几个开源项目开始公测,详情请查看: Flutter中文网开源项目 (ps:目前Flutter中文网开源项目组正在寻找有实力、有梦想、热衷于分享的开发者加入,如果你有兴趣,点进去,获取联系方式)。

    Dart未来

    虽然Dart生态目前还不完善,但可喜的是增速很快,pub上的每天都有5个以上的新包发布,这个数量你也许不以为然,但事实上java 中最常用的包也就200个左右。虽然Dart语言本身自有亮点,但是在其对标的领域,目前都有成熟的并且不赖的解决方案,所以我觉得Dart是否成功目前来看还是主要看flutter和 Fuchsia是否能成功。

    Flutter在没有发布第一个正式版的情况下,目前Github上star将近23K,热度相当高了(当然不能和vue等前端web框架相比,都要上100k了,两者开发者群体规模不同,开源时间不同)。 从Flutter自身来看,开发的应用程序性能确实流畅很多,比weex、rn 有明显的性能提升。

    还有,随着Google Fuchsia OS的发布, DART 及flutter成为一等公民,也就是说将来具有Fuchsia OS的设备,Dart 都会成为主要的开发语言。

    最后

    一些资源:

    1. Flutter资源教程,请访问Flutter中文网
    2. Flutter http请求库dio
    3. Flutter教程
    展开全文
  • Flutter之路-Dart

    2019-05-06 11:43:46
    Dart的一些基础知识可以看Dart中文网,网上也有很多入门教程。这个系列只是我在学习过程很有用,但一些基础教程中未提及的。 Dart和Java在很多方面很相似,但也有很多不一样的地方,比如: 在 Dart 中没有诸如 ...

    Dart的一些基础知识可以看Dart中文网,网上也有很多入门教程。这个系列只是我在学习过程很有用,但一些基础教程中未提及的。

    Dart和Java在很多方面很相似,但也有很多不一样的地方,比如:

    • 在 Dart 中没有诸如 public、private、protected 这样的关键词。以 _ 开头,则该标识符 在库内是私有的
    • Dart2中,可以不使用new关键字创建,也可以使用。
    • Dart中一切都是对象,方法也是对象并且具有一种类型Function。
    • Dart中变量初始值为null,即使是int类型也是null。
    • ..........

    函数

    可选参数

    1. 可选命名参数

      调用方法的时候,你可以使用这种形式 paramNamevalue 来指定命名参数。例如:
      enableFlags(bold: true, hidden: false);

      在定义方法的时候,使用 {param1param2, …} 的形式来指定命名参数:

      /// Sets the [bold] and [hidden] flags to the values
      /// you specify.
      enableFlags({bool bold, bool hidden}) {
        // ...
      }

      可选命名参数常用于类的构造函数,看参看类-构造函数可选命名参数

    2. 可选位置参数

      把一些方法的参数放到 [] 中就变成可选 位置参数了:
      String say(String from, String msg, [String device]) {
        var result = '$from says $msg';
        if (device != null) {
          result = '$result with a $device';
        }
        return result;
      }

      下面是不使用可选参数调用上面方法 的示例:

      assert(say('Bob', 'Howdy') == 'Bob says Howdy');

      下面是使用可选参数调用上面方法的示例:

      assert(say('Bob', 'Howdy', 'smoke signal') ==
          'Bob says Howdy with a smoke signal');

       

    Dart中类的定义、继承、重载和Java差不多,如果你会Java那Dart的面向对象也就很简单。但还是存在一些差异性的地方

    例如:实列化的时一般是new Point();,Dart中new是可选的,Java是必须的。

     

    构造函数

    常见的构造函数定义和Java一样,定义一个和类名字一样的方法就定义了一个构造函数,还可以带有其他可选的标识符:

    class Point {
      num x;
      num y;
    
      Point(num x, num y) {
        // There's a better way to do this, stay tuned.
        this.x = x;
        this.y = y;
      }
    }

    由于把构造函数参数赋值给实例变量的场景太常见了, Dart 提供了一个语法糖来简化这个操作:

    class Point {
      num x;
      num y;
    
      // Syntactic sugar for setting x and y
      // before the constructor body runs.
      Point(this.x, this.y);
    }

     

    构造函数可选命名参数

    在看Flutter一些控件的源码时,经常能看到以下代码

    const Text(this.data, {
        Key key,
        this.style,
        this.strutStyle,
        this.textAlign,
        this.textDirection,
        this.locale,
        this.softWrap,
        this.overflow,
        this.textScaleFactor,
        this.maxLines,
        this.semanticsLabel,
      }) : assert(data != null),
           textSpan = null,
           super(key: key);

    构造函数也是函数,所以同样适用函数的可选命名参数,在加上Dart 提供了一个语法糖,所以可像以下代码调用

    new Text('红色+黑色删除线+25号',
        style: TextStyle(
            color: const Color(0xffff0000),
        ),
    )

    初始化参数列表

    在构造函数体执行可以初始化实例参数, 使用逗号分隔初始化表达式。

    class Point {
      num x;
      num y;
    
      Point(this.x, this.y);
    
      // Initializer list sets instance variables before
      // the constructor body runs.
      Point.fromJson(Map jsonMap)
          : x = jsonMap['x'],
            y = jsonMap['y'] {
        print('In Point.fromJson(): ($x, $y)');
      }
    }

    警告: 初始化表达式等号右边的部分不能访问 this

    初始化列表非常适合用来设置 final 变量的值。

    重定向构造函数

    有时候一个构造函数会调动类中的其他构造函数。 一个重定向构造函数是没有代码的,在构造函数声明后,使用 冒号调用其他构造函数。

    class Point {
      num x;
      num y;
    
      // The main constructor for this class.
      Point(this.x, this.y);
    
      // Delegates to the main constructor.
      Point.alongXAxis(num x) : this(x, 0);
    }

    调用超类构造函数

    默认情况下,子类的构造函数会自动调用超类的 无名无参数的默认构造函数。 超类的构造函数在子类构造函数体开始执行的位置调用。 如果提供了一个 initializer list(初始化参数列表) ,则初始化参数列表在超类构造函数执行之前执行。

    如果超类没有无名无参数构造函数, 则你需要手工的调用超类的其他构造函数。 在构造函数参数后使用冒号 (:) 可以调用 超类构造函数。

    class Person {
      String firstName;
    
      Person.fromJson(Map data) {
        print('in Person');
      }
    }
    
    class Employee extends Person {
      // Person does not have a default constructor;
      // you must call super.fromJson(data).
      Employee.fromJson(Map data) : super.fromJson(data) {
        print('in Employee');
      }
    }
    
    main() {
      var emp = new Employee.fromJson({});
    
      // Prints:
      // in Person
      // in Employee
      if (emp is Person) {
        // Type check
        emp.firstName = 'Bob';
      }
      (emp as Person).firstName = 'Bob';
    }

    下面是构造函数执行顺序:

    1. initializer list(初始化参数列表)
    2. superclass’s no-arg constructor(超类的无名构造函数)
    3. main class’s no-arg constructor(主类的无名构造函数)
    展开全文
  • Flutter实战(二) 了解Dart语言

    万次阅读 2018-05-04 10:40:25
    在上一篇教程中说了Flutter使用Dart语言开发。本篇教程整体介绍一下Dart语言,注意,本篇不会介绍Dart具体语法细节,也不会... 注:如果你想快速的了解Dart以进行Flutter开发,Flutter中文网有一个Dart语言的资源列...
  • Dart基础一基本类型

    2019-03-05 14:12:10
    细节中文教程:https://www.jianshu.com/p/9e5f4c81cc7d # Dart基础 [TOC] ​ 学习一门新的语言,我们可以以自己现有的熟悉的语言来类比,比如我们非常熟悉`Java`,那么剩下的就是需要掌握与`Java`不同的`...
  • 细节中文教程:https://www.jianshu.com/p/9e5f4c81cc7d # Dart基础 ## 类 ​ Dart 是一个面向对象编程语言。 每个对象都是一个类的实例,所有的类都继承于 `Object`。 ```dart //每个实例变量...
  • Flutter json_serializable详细使用(小白教程), Flutter json序列化成对象工具 第一种使用的优势是:在项目中脚本运行生成文件,比较方便,但是稍微有点不好的地方是,会生成两个文件。 第二个,网址在有些情况...
  • 阿里巴巴flutter-go:包含 Flutter 常用 140+ 组件的 Demo 演示与中文文档 awesome-flutter:包含了很多优秀的 Flutter 库 Flutter-Notebook:提供了很多优秀的样例 Dart 语言的 Json 转 Model 插件 在线 Json to ...
  • 对于大部分应用来说,获取网络数据都是必不可少的一个功能。幸运的是,Dart 和 Flutter 就为我们提供了这样的工具。这个教程包含以下步骤:1. 添加http包2...
  • CrossApp 中文文档、Dart 编码风格指南、Excel 教程:实用技巧系列、Hadoop 笔记(PennyWong)、HBuilder 使用教程、HomeKit App 开发指南、imobilebbs CodeSmith 教程、Markdown 语法说明、Revel 中文文档、SSDB ...
  • Lingyu Li (Dart target) Useful information Release notes Getting started with v4 Official site Documentation FAQ ANTLR code generation targets(Currently: Java, C#, Python2|3, JavaScript, Go, C++, ...
  • 其采用Dart(官网、中文网)语言作为开发语言,开发者可以通过Dart语言开发Flutter App,一套代码可同时运行在iOS和Android平台上。Flutter提供了丰富的组件、接口,开发者可以很快地为Flutter添加原生扩展。 国外的...
  • 其采用Dart(官网、中文网)语言作为开发语言,开发者可以通过Dart语言开发Flutter App,一套代码可同时运行在iOS和Android平台上。Flutter提供了丰富的组件、接口,开发者可以很快地为Flutter添加原生扩展。 面试...
  • Learn OpenGL/WebGL资源

    2019-11-26 15:02:49
    1. learn opengl 中文翻译版 ... ...这里有dart和webgl结合的教程 https://github.com/jtmcdole/dart-webgl opengl这个API是一部分,更重要的是shader编写,所以先找个方便的环境入门即可。 ...
  • 自己整理了一些暑假想看的书籍,先码住,暑假回来挖坟看看flag(10本书有点多QAQ)有没有实现。 ...《图解TCP/IP协议》 《你不知道的JavaScript(上中下三卷)》 《图解CSS3:核心技术与...《Dart语言中文教程》 ...
  • flutter 开源地址

    2019-06-11 15:22:18
    在安装、配置过程中,可参考以下中文资料: Flutter中国 Flutter中文文档 dart语言 Flutter项目的开发语言是Dart,...推荐先学习Dart语言官方教程,对Dart有初步了解之后再进行Flutter的学习和开发 切换...
  • flutter学习资料汇总

    2019-08-02 10:25:46
    文章目录Dart语言基础Flutter中文网开源库地址Flutter基础教程视频项目 Dart语言基础 http://www.cndartlang.com/dart Flutter中文网 https://flutterchina.club/ 开源库地址 https://pub.dev/packages Flutter基础...
  • 前后端交互json在线转dart类:json2dart flutter icons内置图标库汇总:简书链接 然后找一本教程就差不多了 提供一个在线教程书链接:flutter实战(但是经常网站就崩了) 这里点名批评flutter中文网,真的辣鸡没事就...
  • 廖雪峰 Python 2.7 中文教程 廖雪峰 Python 3 中文教程 简明Python教程 简明 Python 教程(Python 3) 零基础学 Python 第一版 零基础学 Python 第二版 可爱的 Python Python 2.7 官方教程中文版 Python 3.3 官方教程...
  • 跟着Flutter中文网的配置教程,安装好了flutter,在Android studio里面也安装了dart和flutter的插件。重启后还是在FIle->New里面没有显示New Flutter Project。 反复卸载重装dart和flutter插件好几次,依然没有...
  • 照着Flutter中文网的教程敲的,完整代码要科学上网,索性贴一下,自己也再看一遍。 教程:https://flutterchina.club/get-started/codelab/ import 'package:flutter/material.dart'; import 'package:english_...
  • Balsamiq Mockups 3 中文教程 - v1.2.epub CodeSmith使用教程 - v1.0.epub easy-web-code-book.epub Eclipse 使用教程 - v1.0.epub FontForge 与字体设计 - v1.1.epub Ghost使用指南 - v1.0.epub Git Community Book...
  • Balsamiq Mockups 3 中文教程 - v1.2.epub CodeSmith使用教程 - v1.0.epub easy-web-code-book.epub Eclipse 使用教程 - v1.0.epub FontForge 与字体设计 - v1.1.epub Ghost使用指南 - v1.0.epub Git Community Book...
  • 2019年4月底开始接触flutter和dart,从flutter中文网的教程开始搭建环境,使用flutter1.0.0——stable运行demo,总体很顺利。很快的,flutter1.5在五月初发布了,于是进行了5月9号对项目进行了flutter upgrade,成功...
  • 因为Flutter里面是捆绑了Dart的,所以直接安装Flutter就可以了,不用再单独安装Dart。 1.下载安装包 地址:https://flutter.dev/docs/development/tools/sdk/releases#windows 安装包zip解压到你想安装Flutter SDK...
  • 【Flutter】Flutter 入门

    千次阅读 2019-05-17 18:09:48
    Flutter 中文Dart 起步 Flutter 布局 Flutter 教程 二、入门: 在macOS上搭建Flutter开发环境 2.1 配置镜像 在用户环境变量中添加如下变量: ## Flutter官方临时镜像 export PUB_HOSTED_URL=...
  • 按照网上的或者中文教程 搭配好Flutter 和Dart环境,用AndroidStudio创建Flutter项目,会出现下面的情况。 只需打开cmd命令行输入如下两个命令即可: set PUB_HOSTED_URL=https://pub.flutter-io.cn set FLUTTER_...

空空如也

空空如也

1 2 3 4
收藏数 68
精华内容 27
关键字:

dart中文教程