Flutter从入门到实战(二)之Dart基础语法

Flutter官网镇楼

Flutter官网

Dart语言介绍

Dart 是一种 易于学习、 易于扩展、并且可以部署到 任何地方 的 应用 编程 语言。
在跨平台开领域被 JS 统治的今天,Dart 语言的出现无疑是其最有力的竞争者。Dart语言有着不少Java、kotlin 和 JS 的影子,所以对于 Android 原生开发者、前端开发者而言是非常友好的。
Flutter 中文网也提供了包括IOS开发者,React Native 等开发者迁移到 Flutter 上的文档。所以请不要担心,Dart语言不会是你掌握 Flutter 的门槛,就算你不懂 Dart 也可以看着代码摸索。

 下面简单讲述下 Dart 的基础语法。
'声明':以下Dart语法是本人实践总结的,如有不足之处,敬请谅解。

print

void main(){
    
    
  //程序打印
  print("Hello World");
}

字符串

void main (){
    
    

  String str1 = 'Hello';//" "
  String str2 = '''Hello 
                      Dart''';//""" //多行显示
  print(str2);
  String str3 = 'Hello \n Dart';//" "
  print(str3);
  String str4 =  r'Hello \n Dart';//r打印原始字符串
  print(str4);
  String str5 = "this is";
print(str5 + "Dart");
print(str5*5);
print(str3 == str4);
print(str5[1]);
//插值表达式 ¥{expression}
  int a = 1;
  int b = 2;
print("a + b = ${a + b}");
print(str5.length);
print(str5.isEmpty);
print(str5.contains("this"));
print(str5.substring(0,3));
print(str5.startsWith("a"));
print(str5.endsWith("is"));
  var list  = str5.split(" ");//字符串风格
  print(list);
  print(str5.replaceAll("this", "that"));
}

BOOL值

void main(){
    
    
  bool isTure = true;
  bool isFalse = false;
  print(isTure);
  print("hello".isEmpty);
}

dynamic 动态类型

void main(){
    
    
//dynamic 动态类型
  var a;
  a = 10;
  a = "Dart";

  dynamic b = 20;
  b = "JavaScript";

  var list = new List<dynamic>();
  list.add(1);
  list.add("hello");
  list.add(true);
  print(list);

}

List

void main(){
    
    
  var list1  = [1,2,3,"Dart", true];
  print(list1);
  print(list1[2]);

  list1[1] = "hello";
  print(list1);
  var list2 = const [1,2,3];//不可变list
  print(list2);

  var list3  = new List();//构造方式,暂时了解

  var list = ["hello", "Dart"];
  print(list.length);
  list.add("New");
  print(list);

  list.insert(1, "OC");
      print(list);
      list.remove("OC");
  print(list);
  print(list.indexOf("Dart"));//元素坐在位置

  list.sort();//根据ASC码排序
  print(list);
  print(list.sublist(1));//截取

  list.forEach(print);//循环
//  list.clear();
//  print(list);

}

Map

void main(){
    
    

  var map1 = {
    
    "first":"Dart",1:true};
  print(map1);

  print(map1["first"]);
  map1[1] = false;
  print(map1);

  var map2 = const {
    
    1:"Dart",2:"Java"};//不可变Map
  print(map2);
  
  var map3 = new Map();//构造,暂时了解
  
  var map = {
    
    "first":"Dart","second":"java","third":"pythen"};
  print(map.length);
  print(map.keys);
  print(map.values);
  print(map.containsKey("first"));
  print(map.containsValue("C"));

  map.remove("third");
  print(map);
  map.forEach(f);//map循环

  var list = ["1","2","3"];
  print(list.asMap());//List转map
}
void f(key,value){
    
    
  print("key = $key,value = $value");
}

Number

void main(){
    
    

  num a = 10;
  a = 12.5;
  int b = 20;

  double c = 20.5;
  print(a + b);
  print(a - b);
  print(a * b);
  print(a / b);
  print(a ~/ b);
  print(a % b);

  print(b.isEven);
  print(b.isOdd);
  double f = 10.5;
  print(f.round());//四舍五入
  print(f.floor());//不大于它的整数
  print(f.ceil());//不小于它的整数
  print(f.toInt());//浮点型转整型
  print(b.toDouble());//整型转浮点型

}

Const

void main(){
    
    
var a;
print(a);
a = 10;
print(a);
a = 'Hello world';
print(a);
//final 只能赋值一次
final c = 30;
//常量
const d = 20;

}

算术运算符

void main(){
    
    

  int a = 10;
  int b = 2;
  print(a + b);
  print(a - b);
  print(a * b);
  print(a / b);
  print(a ~/ b);
  print(a % b);

a++;
  print(a);//11
  ++a;
  print(a);//12
  a--;
  print(a);//11
  --a;
  print(a);//10
}

赋值运算符


void main (){
    
    

  int a = 10;
  int b = 5;

  b ??= 10;//  ??=  相当于三目运算符  如果b没有值,择给b赋值10.如果b有值,则直接输出b的值。
  print(b);

  a += 2;
  print(a);

  a-= b;
  print(a);

  a *= b;
  print(a);

  a ~/= b;
  print(a);

  a %= b;
  print(a);

}

条件表达式

void main (){
    
    

  int gender = 0;
  String str = gender == 0 ? "Male = $gender" : "Female = $gender";
  print(str);
  String a = "Dart";
  String b = "Java";
  String c = a ?? b;//??=  类三目运算符  如果a没有值,输出b.如果a有值,输出a。
  print(c);
}

逻辑运算符

void main (){
    
    
void main (){
    
    
  bool isTrue = true;
  print((!isTrue));

  bool isFalse = false;

  print(isTrue && isFalse);

  print(isTrue || isFalse);

  String str = "";

  print(!str.isEmpty);
}

关系运算符

void main(){
    
    

  int a = 5;
  int b = 3;

  print(a == b);
  print(a != b);
  print(a > b);
  print(a < b);
  print(a >= b);
  print(a <= b);
  
  String strA = "123";
  String strB = "321";
  print(strA == strB);
}

break&continue

void main(){
    
    
  var list =[1,2,3];
  for( var item in list){
    
    
    if(item == 2){
    
    
//      break;//停止当前循环
    continue;//跳过当前循环
    }
    print(item);
  }

  print("-------");

  var list2 =[4,5,6];

  for( var item1 in list){
    
    
    if(item1 == 2){
    
    
      break;//停止当前循环,只会终止内层循环
//        continue;//跳过当前循环
    }
    for( var item2 in list2){
    
    
      if(item2 == 5){
    
    
      break;//停止当前循环,只会终止内层循环
//        continue;//跳过当前循环
      }
      print(item2);
    }
  }
}

for语句

void main(){
    
    
var list = [1,2,3,4,5];
  for(var index = 0; index < list.length; index++ ){
    
    
    print(list[index]);
  }
  print("-------");
  for(var item in list){
    
    
  print(item);
  }
}

if语句

void main(){
    
    
int score = 100;

  if(score >= 90){
    
    
    if ( score == 100){
    
    
      print("完美");
    }else{
    
    
      print("优秀");
    }
  }else if(score > 60){
    
    
    print("良好");

  }else if(score == 60){
    
    
    print("及格");

  }else{
    
    
    print("不及格");
  }
}

switch语句

void main(){
    
    
 String language = "Java";

  switch (language){
    
    
    case "Dart":
      print("Dart is My favorite");
    break;
    case "Java":
      print("Java is My favorite");
      break;
    case "Python":
      print("Python is My favorite");
      break;
    default:
      print("None");
  }

  switch(language){
    
    
    Test:
    case "Dart":
      print("Dart is My favorite");
      break;
    case "Java":
      print("Java is My favorite");
      continue Test;//跳出去,执行Test方法。
//      break;
    case "Python":
      print("Python is My favorite");
      break;
    default:
      print("None");
  }
}

while语句

void main(){
    
    
//1.while 循环
  int count = 0;
  while(count < 5){
    
    
    print(count++);
  }
  print("-----$count-------");
//2.do while 循环
do{
    
    
    print(count--);
}
while( count > 0 && count < 5);
}

匿名方法

void main(){
    
    
var func = ( str){
    
    
    print("Hello----$str");
  };
  func(30);

  //此匿名方法不建议使用
//  ((){
    
    
//    print("Test");
//  }
//  )();

//方法1:

  var list2 = ["h","e","l","l","o"];
    var result = listTimes(list2, (str){
    
    return str * 3;});
    print(result);

//方法2:
  var list3 = ["h","e","l","l","o"];


  print(listTimes2(list3));
}

List listTimes(List list,String times(str)){
    
    

  for (var index = 0; index < list.length; index++){
    
    
    list[index] = times(list[index]);
  }
  return list;
}

List listTimes2(List list){
    
    

  var func = (str){
    
    return str *3; };

  for (var index = 0; index < list.length; index++){
    
    
    list[index] = func(list[index]);
  }
  return list;
}

闭包

//闭包是一个方法(对象)
//闭包定义在其他方法内部
//闭包能够访问外部方法内的局部变量,并持有其状态。
void main(){
    
    
var func = a();
  func();
  func();
  func();
  func();
  func();

var funcb = b();
funcb();
funcb();
funcb();
funcb();
funcb();

}

a(){
    
    
  int count = 0;
  printCount(){
    
    
    print(count++);
  }

  return printCount;
}
//匿名方法
b(){
    
    
  int count = 5;
  return(){
    
    
    print(count++);
  };
}

方法定义

void main(){
    
    
print(args);

  print(getPerson("zhangsan",18));
  printPerson("李四", 20);

}

//String getPerson (String name,int age){
    
    
//
//  return "name = $name, age = $age";
//}
int gender = 2;
getPerson ( name, age) => gender == 1 ?"name = $name, age = $age":"Test";
printPerson(name, age){
    
    
  print ("name = $name, age = $age");
}

默认参数

void main(){
    
    
// 1. 用 "=" 表示默认值
printPerson("李四");
  printPerson("李四",age: 20);
  printPerson("李四",gender: "Male");
}

printPerson(String name,{
    
    int age = 30,  String gender = "Female"}){
    
    

  print("name = $name, age = $age,gender = $gender");
}

方法对象

void main(){
    
    
Function func = printHello;
func();

var list = [1,2,3,4];
list.forEach(print);

var list2 = ["h","e","l","l","o"];
print(listTimes(list2, times));

}

void printHello (){
    
    
  print("Hello");

}

List listTimes(List list,String times(str)){
    
    
  
  for (var index = 0; index < list.length; index++){
    
    
    list[index] = times(list[index]);
  }
  return list;
}

String times(str){
    
    

  return str*6;
}

可选参数

void main(){
    
    
// 1.{} 传值时带参数,带冒号,但是多个参数位置可更换
// 2.[] 传值时不带参数,不带冒号,多个参数位置不可更换
// 3.可选参数放在必传参数后面
printPerson("李四");
printPerson("李四",age: 20,gender: "Male");
printPerson("李四",gender: "Male",age: 20);


printPerson2("张三");
printPerson2("张三",20, "Male");


}

printPerson(String name,{
    
    int age,  String gender}){
    
    

  print("name = $name, age = $age,gender = $gender");

}

printPerson2( String name,[int age,  String gender]){
    
    

  print("name = $name, age = $age,gender = $gender");

}

猜你喜欢

转载自blog.csdn.net/gjm_123/article/details/98202610