Flutter(一)--Dart语言基础

1 前言

Dart 是一种面向对象的语言,具有 C 语言风格语法,广泛应用创建单页面应用程序。谷歌发布了一个特殊的Chromium版本 - Dart VM 。使用Dartium可以在浏览器上进行测试之前,不必将代码编译为JavaScript。

2 Dart语言基础语法

  1. 变量和运算符
  2. 函数
  3. 表达式和编程构造
  4. 决策和循环结构
  5. 注解
  6. 库和包
  7. 类型定义
  8. 数据结构-集合/泛型

3 标识符

  • 可以包含字符和数字,不能以数字开头
  • _ 和 $ 开头
  • 不能是关键字
  • 必须唯一
  • 区分大小写
  • 不能包含空格

4 Dart注释

// 单行注释
/*
   多行注释
 */

5 面向对象编程

  1. 对象
  2. 方法

6 数据类型

  1. 数字
  2. 字符串
  3. 布尔
  4. 列表(类似数组)
  5. 集合
  6. 映射
  7. 符文(用于表示字符串中的 Unicode 字符)
  8. 符号

6.1 数字类型

//1.整数 int
var x = 123;
//2.双精度数
double x = 10;

//String 转成 int
var one = int.parse('1');

//String 转成 double
var one = double.parse('1.1');

//int 转成 String
var one = 1.1.toString();

//double 转成 String
var one = 2.435.toStringAsFixed(2);
var one = 2.3.toString();

//3.常量
const MAX_SIZE = 6

6.2 字符串

//1.字符串 UTF-16 代码单元
//2.符文 UTF-32 代码单元序列
var s1 = 'test';
var s2 = "test";
//3.使用 ${} 表达式放到字符串中
var i = 10;
var s2 = "${i}";
//4. + 号连接
var s3 = 's' + '1';
//5.单引号或双引号的三引号创建多行字符串
var s1 = '''
     ssss 
     ''';
var s2 = """
     ssss 
     """;
//6.加 r 来创建 原始字符串
var s1 = r'google\n不换行了'; 
//7.常量
const s1 = 'google';     

6.3 布尔类型

1.bool 类型,truefalse

6.4 列表类型

//1.列表是 List
var list = [1,2,3];
//2.编译时常量列表
var list = const [1,2,2]
//3.扩展运算符 ...,将列表掺入另外一个列表
var list = [1,2,3];
var list2 = [0,...list];
//6.空值感知扩展运算符 ...?,不为空将列表掺入另外一个列表
var list;
var list2 = [0,...?list];
//5.if 和 collection 集合
var nav = [
  1,2,
  if(条件) '3'
];

var list = [1,2,3];
var list2 =[
 0,
 for(var i in list) i
];

6.5 集合

//1.Set 是唯一无序集合
var s1 = {'1','2'};
//2.创建空集合
var names = <String>{};
Set<String> names = {};
//3.add() addAll() 添加
var s1  = <String>{};
s1.add('1');
//4.length 长度
s1.length;
//5.常量
final s1 = const {1,2}

6.6 映射

//1.键值对
var s1 = {
  'a':1,
  'b':2
}
//2.使用 Map
var gifts = Map();
gifts['a'] = 1;
//3.length 长度
gifts.length
//4.常量
final map = const {
    'a':1,
    'b':2
}

6.7 符文

//1.String.codeUnitAt()
//2.String.codeUnits()
//3.String.runes()

6.8 符号

Symbol对象表示Dart程序中声明的运算符或标识符,获取标识符符号,使用符号文字,#后跟标识符
#radix
#bar

7 变量

7.1 变量语法

var name = "张三";

7.2 默认值

  1. 未初始化的变量初始值都是 null,数字类型也一样

7.3 dynamic 关键字

//1.动态类型 一般在泛型时使用
var list = new list<dynamic>();
list.add(1);
list.add("1");

7.4 final 和 const

//1.声明常量
final s1 = 0;
final int s1 = 0;

const s1 = 0;
const int s1 = 0;

8 运算符

  1. 和 java 差不多

9 条件语句

  1. if
  2. if else
  3. else if
  4. switch case

10 循环

//1.for
//2.for in
for (var prop in obj){
}
//3.while
//4.do while
//5.控制语句 break continue
//6.标签跳出循环
outerloop:
for(var i = 0;i < 5; i++){
  if(i==5) break outerloop;
}

11 Dart 数字

//1.int
var int a = 1;
//2.double
var double a = 1.1

12 字符串

var s1 = ""
var s2 = ''

13 布尔类型

bool s = true;

14 列表

//1.固定长度
var list = new List(3);
list[0] = 1;
list[1] = 2;
list[3] = 3;
//2.可增长长度
var list = [0,1];
var list = new List();
//3.动态添加
list.add(5);

14 映射

//1.使用映射文字
var map = {"a":1,"b",2};
//2.使用 Map 构造函数
var map = new Map();
//3.forEach
map.forEach((k,v)=> print("$k $v"));

15 符号

  1. 不透明的动态字符串名称,反映库中的元数据,使用 Symbol 反射

16 符文

//1.String.codeUnitAt()
String x = 'Runes'; 
print(x.codeUnitAt(0)); //82
//2.String.codeUnits
print("test".codeUnits); //[116, 101, 115, 116]
//3.String.runes()
"test".runes.forEach(int rune){
     var character=new String.fromCharCode(rune); 
     print(character);
};
//4.Runes
Runes input = new Runes('\u{1f605}'); 
print(new String.fromCharCodes(input)); 

17 枚举

enum Status{
 none,runnind
}
Status.values.forEach((v)=> print("$v"))

18 函数

//1.定义函数
void test(){}
//2.可选函数
void test(n1,[s1]){}
//3.可选命名参数
void test(n1,{s1,s2}){}
test(123,s1:'hellow');
//4.可选命名参数 带有默认值
void test(n1,{s1:12}){}
test(123);

19 接口

class Son implements Person

20 类

class Car(){
    String engine;
    Car(){}
    //命名构造函数
    Car.namedConst(String engine){
      this.engine = engine;
    }
    void set setEnine(String engine){
        this.engine = engine;
    }
    String get getEngine(){
       return this.engine;
    }    
}

//1.继承
class Son extends Person{}
//2.重写
@override
//3.static 关键字 静态变量
//4.super 关键字 找父级别

21 对象

new Test()
..test1()
..test2()

22 集合

//1.List
//1.1.固定长度
var list = new List(10);
//1.2.可增长长度
var list = new List();
//2.Set
Set set = new Set();
Set set = new Set.from([1,2]);
HashMap HashSet 
//3.Map
var map = new Map()
//4.Queue
Queue a = new Queue();
//5.迭代
Iterator i = q.iterator;
while(i.moveNext()){
  print(i.current);
}

22 异常

try/on/catch/finally
thorow 抛出异常

23 Typedef

//1.用作引用函数的指针。
typedef ManyOperation(int firstNo , int secondNo); 
//function signature  

Add(int firstNo,int second){ 
   print("Add result is ${firstNo+second}"); 
} 
Subtract(int firstNo,int second){ 
   print("Subtract result is ${firstNo-second}"); 
}
Divide(int firstNo,int second){ 
   print("Divide result is ${firstNo/second}"); 
}  
Calculator(int a, int b, ManyOperation oper){ 
   print("Inside calculator"); 
   oper(a,b); 
}  
void main(){ 
   ManyOperation oper = Add; 
   oper(10,20); 
   oper = Subtract; 
   oper(30,20); 
   oper = Divide; 
   oper(50,5); 
}

24 库

//1.导入库
import 'dart:math'
//2.封装库
library loggerlib;
void _log(msg){
}
import 'test.dart' as web
void main(){
  web._log("");
}

25 同步和异步

//1.同步
String name = stdin.readLineSync()
//2.异步
void main(){ 
   File file = new File( Directory.current.path+"\\data\\contact.txt"); 
   //在未来某个时段获取值
   Future<String> f = file.readAsString();  
   f.then((data)=>print(data));  
   print("End of main");  
}

26 并发

//1.使用 Isolates 作为并行工作的工具 dart:isolate
void foo(var message){
  print('$message')
} 
void main(){
  Isolate.spawn(foo,'Hellow');
  Isolate.spawn(foo,'Hellow');
}
//催生功能
//将传递给衍生函数对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值