dart相关知识
-
Dart 入门教程[TOC] 一、开篇 dart 语言具有如下特性 一切变量皆是对象,每个对象都是类的实例。int、double、函数、 null 等都是对象,所有对象都继承自 Object 类 dart 是强类型语言,但由于具备类型推导功能所以类型声明是可选的 dart 支持顶级函数、静态函数、实例函数,也允许在函数中嵌套函数,即局部函数。类似的,dart 也支持顶级变量、静态变量和实例变量 dart 没有关于 public、protected、private 的关键字。通过为变量标识符添加下划线前缀,表明该标识符对其库是私有的 ....
-
Dart编程语言入门Dart基础入门语法介绍,详细说明可以查看相关视频《Dart编程语言入门》。 变量与常量 变量 1.使用 var 声明变量,默认值为 null var a;//null a = 10; 2.显示类型声明 int a;//null a = 10; 3.使用 var 声明,可赋予不同类型的值 var a; //null a = 10; //int a = "Dart"; //string 4.使用 final 声明只能赋值一次的变量 final a = 30; a = 10; //Error 常量 使用 const 声明编译期常量 const a = 10; 数据类型 数值型 Dart中使用 num 表
-
Dart语言详解(二)——基本语法想学Flutter,就请关注这个专栏 Flutter系列(一)——详细介绍 Flutter系列(二)——与React Native进行对比 Flutter系列(三)——环境搭建(Windows) Flutter系列(四)——HelloWorld Dart语言详解(一)——详细介绍 Dart语言详解(二)——基本语法 Dart语法详解(三)——进阶篇 文档归档: https://github.com/yang0range/flutterfile 这是第「41篇」分享 前言 之前,详细的介绍了一下Dart语言的前世今生,接下来,我们就该深入的了解Dart语言,了解Dart语言的基本数据类
-
1、Dart开发环境配置(1)开发环境搭建IDE中下载插件Dart后,直接新建项目HelloWorldmain(List<String> arguments) { print('Hello world'); }Dart语言教程:https://www.yiibai.com/dart/dart_programming_overview.html(2)Dart语言概述Dart是一种面向对象的语言,具有C语言风格的语法,可以选择将它编译成JavaScript。它支持各种编程辅助工具,如:接口,类,集合,泛型和可选类型。Dart可以广泛用于创建单页面应用程序。单页应用程序仅适用于网站和Web应用程序。单页应用程序可以在网站的不同屏幕之间进行导航,而无需在浏览器中加载不同的网页。一个典型的例子是GMail—当点击收件箱中的邮件时,浏览器会停留在同一个网页上,但JavaScript代码会隐藏收件箱并将邮件正文显示在屏幕上。谷歌发布了一个特殊的Chromium版本
dart相关课程
dart相关教程
- 3.2 dart-sass 的自定义导入 dart-sass 是提供了一个可扩展的导入器的抽象类( imorter class ),我们用过扩展这个类来实现自定义导入,对于我们前端工程师来说,使用 Dart 语言开发的并不多。不过在前端项目中使用 dart-sass 的话,我们可以使用类似上面 node-sass 的配置方法,所以这里我们仅举个在前端项目中使用 dart-sass 的例子来看一下:var sass = require("sass");var Fiber = require("fibers");sass.render({ file: "input.scss", importer: function(url, prev, done) { // ... }, fiber: Fiber}, function(err, result) { // ...});
- 3. 在前端项目中安装 Sass 上面我们讲了在 Ruby 环境中安装 Sass ,但我们前端在 Ruby 环境下开发是非常少的,我们前端现在基本都使用 Webpack 构建,一般都是在 Node 环境开发,那在前端项目里是如何安装 Sass 呢?首先你要知道 node-sass 和 dart-sass ,这两个都是提供好的类库,是 Sass 的实现,本身 Sass 是使用 Ruby 语言写的,但是它提供了很多接口以方便其他语言来集成和封装,node-sass 和 dart-sass 就是基于 LibSass( Sass 的 C 版本) 封装而来的。它们和 LibSass 的关系就是橘子和橘子汁的关系,我们前端基本也都是通过这两个库来使用 Sass ,我们画个图来看下它们的关系:本章节我们以 node-sass 为例,本教程中所有的内容都是以 node-sass 为例的。
- 3.1 List (只读集合) 和 MutableList (可变集合) 集合初始化Tips: 在 Kotlin 中 List 只读集合初始化主要是通过 listOf<T> 函数,而 MutableList 可变集合初始化主要是通过 mutableListOf<T> 函数。List 初始化:fun listInit() { //通过listOf<T>(xx,xx,xx)方法初始化,带初始化元素的集合 val languages1: List<String> = listOf<String>("kotlin", "dart", "java", "swift") //List<String>可以不用声明,通过listOf<String>可以类型推导出具体类型 val languages2 = listOf<String>("kotlin", "dart", "java", "swift") //<String>泛型类型可以不用声明,通过集合内部元素初始化值的类型,可以推导出元素类型是String val languages3 = listOf("kotlin", "dart", "java", "swift") //通过listOf<T>函数初始化空集合 val emptyLanguages1: List<String> = listOf<String>() //<String>泛型类型可以不用声明,通过List<String>可以知道是泛型类型是String val emptyLanguages2: List<String> = listOf() //注意: 这是不合法的,因为无法推导出具体元素类型// val emptyLanguages3 = listOf() //空集合还可以通过emptyList<T>函数来实现,实际上通过源码发现listOf<T>(),最后都是委托调用emptyList<T>() val emptyLanguages4 = emptyList<String>()}MutableList 初始化:fun mutableListInit() { //通过mutableListOf<T>(xx,xx,xx)函数初始化,带初始化元素的集合 val languages1: MutableList<String> = mutableListOf<String>("kotlin", "dart", "java", "swift") //MutableList<String>可以不用声明,通过mutableListOf<String>可以类型推导出具体类型 val languages2 = mutableListOf<String>("kotlin", "dart", "java", "swift") //<String>泛型类型可以不用声明,通过集合内部元素初始化值的类型,可以推导出元素类型是String val languages3 = mutableListOf("kotlin", "dart", "java", "swift") //mutableListOf<T>函数初始化可变空集合 val emptyLanguages1: MutableList<String> = mutableListOf<String>() //<String>泛型类型可以不用声明,通过MutableList<String>可以知道是泛型类型是String val emptyLanguages2: MutableList<String> = mutableListOf() //注意: 这是不合法的,因为无法推导出具体元素类型// val emptyLanguages3 = mutableListOf() //可变空集合还可以通过ArrayList<T>函数来实现,实际上通过源码发现mutableListOf<T>(),最后都是委托调用ArrayList<T>() //而且ArrayList<T>实际上就是Java中的ArrayList<T>,只不过是Kotlin中取了一个别名而已,关于具体内容请参考这个类kotlin.collections.TypeAliasesKt实现 val emptyLanguages4: MutableList<String> = ArrayList<String>()}集合遍历Tips: List 和 MutableList 的遍历是一样的.List 遍历:fun main() { val languageList = listOf("kotlin", "dart", "java", "swift") //for-in for (language in languageList) { println(language) } //for-each languageList.forEach { println(it) } //for-in-indices for (index in languageList.indices) { println(languageList[index]) } //while-iterator val iterator = languageList.iterator() while (iterator.hasNext()) { println(iterator.next()) }}MutableList 遍历:fun main() { val languageList = mutableListOf("kotlin", "dart", "java", "swift") languageList.add("ruby") languageList.add("python") //for-in for (language in languageList) { println(language) } //for-each languageList.forEach { println(it) } //for-in-indices for (index in languageList.indices) { println(languageList[index]) } //while-iterator val iterator = languageList.iterator() while (iterator.hasNext()) { println(iterator.next()) }}
- 3.2 Set (只读集合) 和 MutableSet (可变集合) 集合初始化在 Kotlin 中 Set 只读集合初始化主要是通过 setOf<T> 函数,而 MutableSet 可变集合初始化主要是通过 mutableSetOf<T> 函数。Set 初始化:fun setInit() { //通过setOf<T>(xx,xx,xx)函数初始化,带初始化元素的集合 val languages1: Set<String> = setOf<String>("kotlin", "dart", "java", "swift") //Set<String>可以不用声明,通过setOf<String>可以类型推导出具体类型 val languages2 = setOf<String>("kotlin", "dart", "java", "swift") //<String>泛型类型可以不用声明,通过集合内部元素初始化值的类型,可以推导出元素类型是String val languages3 = setOf("kotlin", "dart", "java", "swift") //通过setOf<T>函数初始化空集合 val emptyLanguages1: Set<String> = setOf<String>() //<String>泛型类型可以不用声明,通过List<String>可以知道是泛型类型是String val emptyLanguages2: Set<String> = setOf() //注意: 这是不合法的,因为无法推导出具体元素类型// val emptyLanguages3 = setOf() //空集合还可以通过emptySet<T>函数来实现,实际上通过源码发现setOf<T>(),最后都是委托调用emptySet<T>() val emptyLanguages4 = emptySet<String>()}MutableSet 初始化:fun mutableSetInit() { //通过mutableSetOf<T>(xx,xx,xx)函数初始化,带初始化元素的集合 val languages1: MutableSet<String> = mutableSetOf<String>("kotlin", "dart", "java", "swift") //MutableSet<String>可以不用声明,通过mutableSetOf<String>可以类型推导出具体类型 val languages2 = mutableSetOf<String>("kotlin", "dart", "java", "swift") //<String>泛型类型可以不用声明,通过集合内部元素初始化值的类型,可以推导出元素类型是String val languages3 = mutableSetOf("kotlin", "dart", "java", "swift") //mutableSetOf<T>函数初始化空集合 val emptyLanguages1: MutableSet<String> = mutableSetOf<String>() //<String>泛型类型可以不用声明,通过MutableSet<String>可以知道是泛型类型是String val emptyLanguages2: MutableSet<String> = mutableSetOf() //注意: 这是不合法的,因为无法推导出具体元素类型// val emptyLanguages3 = mutableSetOf() //空集合还可以通过LinkedHashSet<T>函数来实现,实际上通过源码发现mutableSetOf<T>(),最后都是委托调用LinkedHashSet<T>() //而且LinkedHashSet<T>实际上就是Java中的LinkedHashSet<T>,只不过是Kotlin中取了一个别名而已 val emptyLanguages4: MutableSet<String> = LinkedHashSet<String>()}集合遍历Tips:Set 和 MutableSet 的遍历是一样的。Set 的遍历:fun main() { val languageSet = setOf("kotlin", "dart", "java", "swift") //for-in for (language in languageSet) { println(language) } //for-each languageSet.forEach { println(it) } //for-in-indices for (index in languageSet.indices) { println(languageSet.elementAt(index))//注意,Set是没有get方法运算符重载函数的, // 所以不能直接通过languageSet[index]获取,但是可以通过扩展函数elementAt获取 } //while-iterator val iterator = languageSet.iterator() while (iterator.hasNext()) { println(iterator.next()) }}MutableSet 的遍历 fun main() { val languageSet = mutableSetOf("kotlin", "dart", "java", "swift") languageSet.add("ruby") languageSet.add("python") //for-in for (language in languageSet) { println(language) } //for-each languageSet.forEach { println(it) } //for-in-indices for (index in languageSet.indices) { println(languageSet.elementAt(index))//注意,Set是没有get方法运算符重载函数的, // 所以不能直接通过languageSet[index]获取,但是可以通过扩展函数elementAt获取 } //while-iterator val iterator = languageSet.iterator() while (iterator.hasNext()) { println(iterator.next()) }}
- 3.3 Map (只读集合) 和 MutableMap (可变集合) 集合初始化Map 的初始化:fun mapInit() { //通过mapOf<K,V>(xx to xx,xx to xx,xx to xx)函数初始化,带初始化元素的集合, val languages1: Map<String, String> = mapOf<String, String>( "1" to "kotlin", "2" to "dart", "3" to "java", "4" to "swift" ) // xx to xx实际上是Pair<K,V>的中缀表达式简写形式 val languages2: Map<String, String> = mapOf<String, String>( Pair("1","kotlin"), Pair("2","dart"), Pair("3","java"), Pair("4","swift") ) //Map<K,V>可以不用声明,通过mapOf<String,String>可以类型推导出具体类型 val languages3 = mapOf<String, String>( Pair("1","kotlin"), Pair("2","dart"), Pair("3","java"), Pair("4","swift") ) //<String, String>泛型类型可以不用声明,通过集合内部元素初始化值的类型,可以推导出元素类型是<String, String> val languages4 = mapOf( Pair("1","kotlin"), Pair("2","dart"), Pair("3","java"), Pair("4","swift") ) //通过mapOf<K,V>函数初始化空集合 val emptyLanguages1: Map<String, String> = mapOf<String, String>() //<String, String>泛型类型可以不用声明,通过Map<String, String>可以知道是泛型类型是<String, String> val emptyLanguages2: Map<String, String> = mapOf() //注意: 这是不合法的,因为无法推导出具体元素类型// val emptyLanguages3 = mapOf() //空集合还可以通过emptyMap<K,V>函数来实现,实际上通过源码发现mapOf<K,V>(),最后都是委托调用emptyMap<K,V>() val emptyLanguages4 = emptyMap<String, String>()}MutableMap 的初始化:fun mutableMapInit() { //通过mutableMapOf<K,V>(xx to xx,xx to xx,xx to xx)函数初始化,带初始化元素的集合, val languages1: MutableMap<String, String> = mutableMapOf<String, String>( "1" to "kotlin", "2" to "dart", "3" to "java", "4" to "swift" ) // xx to xx实际上是Pair<K,V>的中缀表达式简写形式 val languages2: MutableMap<String, String> = mutableMapOf<String, String>( Pair("1","kotlin"), Pair("2","dart"), Pair("3","java"), Pair("4","swift") ) //MutableMap<K,V>可以不用声明,通过mutableMapOf<String,String>可以类型推导出具体类型 val languages3 = mutableMapOf<String, String>( Pair("1","kotlin"), Pair("2","dart"), Pair("3","java"), Pair("4","swift") ) //<String, String>泛型类型可以不用声明,通过集合内部元素初始化值的类型,可以推导出元素类型是<String, String> val languages4 = mutableMapOf( Pair("1","kotlin"), Pair("2","dart"), Pair("3","java"), Pair("4","swift") ) //通过mapOf<K,V>函数初始化空集合 val emptyLanguages1: MutableMap<String, String> = mutableMapOf<String, String>() //<String, String>泛型类型可以不用声明,通过MutableMap<String, String>可以知道是泛型类型是<String, String> val emptyLanguages2: MutableMap<String, String> = mutableMapOf() //注意: 这是不合法的,因为无法推导出具体元素类型// val emptyLanguages3 = mutableMapOf() //空集合还可以通过LinkedHashMap<K,V>函数来实现,实际上通过源码发现mutableMapOf<K,V>(),最后都是委托调用LinkedHashMap<K,V>() //而且LinkedHashMap<K,V>实际上就是Java中的LinkedHashMap<K,V>,只不过是Kotlin中取了一个别名而已 val emptyLanguages4: MutableMap<String, String> = HashMap<String, String>()}集合的遍历Tips:Map 和 MutableMap 的遍历是一样的.Map 的遍历:fun main() { val languageMap: Map<String, String> = mapOf<String, String>("1" to "kotlin", "2" to "dart", "3" to "java") //for-in-entry for (entry in languageMap) { println("key: ${entry.key} ---> value: ${entry.value}") } //for-in-解构声明 for ((key, value) in languageMap) { println("key: $key ---> value: $value") } //for-each languageMap.forEach { key, value -> println("key: $key ---> value: $value") } //for-each-解构声明 languageMap.forEach { (key, value) -> println("key: $key ---> value: $value") } //for-in-Map.Entry for (entry in languageMap.entries) { println("key: ${entry.key} ---> value: ${entry.value}") } //for-each-Map.Entry languageMap.entries.forEach { entry -> println("key: ${entry.key} ---> value: ${entry.value}") } //for-each-index-Map.Entry languageMap.entries.forEachIndexed { index, entry -> println("index: $index -----> key: ${entry.key} ---> value: ${entry.value}") } //for-in-Map中的key for (key in languageMap.keys) { println("key: $key") } //for-each-Map中的key languageMap.keys.forEach { println(it) } //for-in-Map中的value for (value in languageMap.values) { println("value: $value") } //for-each-Map中的value languageMap.values.forEach { println(it) } //while-iterator val iterator = languageMap.iterator() while (iterator.hasNext()) { val entry = iterator.next() println("key: ${entry.key} ---> value: ${entry.value}") }}MutableMap 的遍历:fun main() { val languageMap: MutableMap<String, String> = mutableMapOf<String, String>("1" to "kotlin", "2" to "dart", "3" to "java") languageMap["4"] = "swift" languageMap.putAll(mapOf("5" to "ruby", "6" to "python")) //for-in-entry for (entry in languageMap) { println("key: ${entry.key} ---> value: ${entry.value}") } //for-in-解构声明 for ((key, value) in languageMap) { println("key: $key ---> value: $value") } //for-each languageMap.forEach { key, value -> println("key: $key ---> value: $value") } //for-each-解构声明 languageMap.forEach { (key, value) -> println("key: $key ---> value: $value") } //for-in-Map.Entry for (entry in languageMap.entries) { println("key: ${entry.key} ---> value: ${entry.value}") } //for-each-Map.Entry languageMap.entries.forEach { entry -> println("key: ${entry.key} ---> value: ${entry.value}") } //for-each-index-Map.Entry languageMap.entries.forEachIndexed { index, entry -> println("index: $index -----> key: ${entry.key} ---> value: ${entry.value}") } //for-in-Map中的key for (key in languageMap.keys) { println("key: $key") } //for-each-Map中的key languageMap.keys.forEach { println(it) } //for-in-Map中的value for (value in languageMap.values) { println("value: $value") } //for-each-Map中的value languageMap.values.forEach { println(it) } //while-iterator val iterator = languageMap.iterator() while (iterator.hasNext()) { val entry = iterator.next() println("key: ${entry.key} ---> value: ${entry.value}") }}
- 4. 小结 本节内容主要是为了让大家了解 Sass 的一些高级玩法,比如自定义函数和自己设置存储缓存,实际的工作中并不会用到,但如果你要加入到 Sass 的官方开发团队中,这些东西就有必要去深入了解了。这些就不止是前端的范畴了,还会涉及到 Ruby 、Dart、C++ 等编码语言,如果你对这些有着浓厚的兴趣,可以去深入理解 Sass 的机制和扩展。
dart相关搜索
-
daima
damain
dart
dataset
datasource
datediff
datediff函数
datepicker
datetime
db4o
dbi
dcloud
deallocate
debian安装
debugger
debugging
declaration
declarations
declare
decode函数