Flutter-Dart语言(基础篇)

Dart介绍:

Dart是由谷歌开发的计算机编程语言,它可以被用于web、服务器、移动应用 和物联网等领域的开发。

Dart诞生于2011年,号称要取代JavaScript。但是过去的几年中一直不温不火。直到Flutter的出现现在被人们重新重视。

要学Flutter的话我们必须首先得会Dart。官网

Dart 变量:

dart是一个强大的脚本类语言,可以不预先定义变量类型 ,自动会类型推倒

dart中定义变量可以通过var关键字可以通过类型来申明变量如:

var str='this is var';

    String str='this is var';

    int str=123;

Dart 常量: final 和 const修饰符

  • const: 值不变 一开始就得赋值
  • final : 可以开始不赋值 只能赋一次 ; 而final不仅有const的编译时常量的特性,最重要的它是运行时常量,并且final是惰性初始化,即在运行时第一次使用前才初始化,永远不改量的量,请使用final或const修饰它,而不是使用var或其他变量类型。
  // final 常量

    // final PI=3.14159;
    // PI=124214.214124;   //错误写法
    // print(PI);
    final a=new DateTime.now();
    print(a);   //2022-07-07 14:27:23.856542
    //const a=new DateTime.now();   //报错了

Dart中的数据类型:

Numbers(数值): int double
void main(){
  //1、int   必须是整型
    int a=123;
    a=45;
    print(a);
  //2、double  既可以是整型 也可是浮点型
    double b=23.5;
    b=24;
    print(b);
  //3、运算符
    // + - * / % 
    var c=a+b;
    print(c);
}
Strings(字符串): String
void main(){

  //1、字符串定义的几种方式
  var str1='this is str1';
  String str2="this is str2";
  String str3='''this is str3
  this is str3
  this is str3
  '''; 
  //2、字符串的拼接
  print(str1 + str2);  
  print(str1 +" "+ str2);
}
Booleans(布尔) : bool
void main(){

  //1、bool
    bool flag1=true;
    print(flag1);

    bool flag2=false;
    print(flag2);


  //2、条件判断语句
    var flag=true;
    if(flag){
      print('真');      
    }else{
      print('假');
    }
    var a=123;
    var b='123';
    if(a==b){
      print('a=b');
    }else{
        print('a!=b');
    }
}


List(数组)

在Dart中,数组是列表对象,所以大多数人只是称它们为列表

常用属性:

属性
length长度
reversed翻转
isEmpty是否为空
isNotEmpty是否不为空

常用方法:

属性
add增加
addAll拼接数组
indexOf查找 传入具体值
remove删除 传入具体值
removeAt删除 传入索引值
fillRange修改
insert(index,value);指定位置插入
insertAll(index,list)指定位置插入List
toList()其他类型转换成List
join()List转换成字符串
split()字符串转化成List
forEach遍历
map遍历
where
any
every
void main() {
  //1、第一种定义List的方式

  var l1 = ["张三", 20, true];
  print(l1); //[张三, 20, true]
  print(l1.length); //3
  print(l1[0]); //张三
  print(l1[1]); //20

  //2、第二种定义List的方式 指定类型

  var l2 = <String>["张三", "李四"];
  print(l2);

  var l3 = <int>[12, 30];
  print(l3);

  //3、第三种定义List的方式  增加数据 ,通过[]创建的集合它的容量可以变化

  var l4 = [];
  print(l4);
  print(l4.length);

  l4.add("张三");
  l4.add("李四");
  l4.add(20);
  print(l4);
  print(l4.length);

  var l5 = ["张三", 20, true];
  l5.add("李四");
  l5.add("zhaosi");
  print(l5);

  //4、第四种定义List的方式
  var l6 = List.filled(2, ""); //创建一个固定长度的集合
  print(l6);
  print(l6[0]);

  l6[0] = "张三"; //修改集合的内容
  l6[1] = "李四";
  print(l6); //[张三, 李四]
}  

Set

用它最主要的功能就是去除数组重复内容
Set是没有顺序且不能重复的集合,所以不能通过索引去获取值

void main(){
  var s=new Set();
  s.add('香蕉');
  s.add('苹果');
  s.add('苹果');
  print(s);   //{香蕉, 苹果}
  print(s.toList()); 

  List myList=['香蕉','苹果','西瓜','香蕉','苹果','香蕉','苹果'];
  var s2=new Set();
  s2.addAll(myList);
  print(s2);
  print(s2.toList());
Maps(字典)

通常来说,Map 是一个键值对相关的对象。 键和值可以是任何类型的对象。每个 键 只出现一次, 而一个值则可以出现多次
常用属性:

属性
keys获取所有的key值
values获取所有的value值
isEmpty是否为空
isNotEmpty是否不为空

常用方法:

属性
remove(key)删除指定key的数据
addAll({…})合并映射 给映射内增加属性
containsValue查看映射内的值 返回true/false
forEach遍历
map
where
any
every
void main(){
  //第一种定义 Maps的方式

    // var person={
    //   "name":"张三",
    //   "age":20,
    //   "work":["程序员","送外卖"]
    // };

    // print(person);
    // print(person["name"]);
    // print(person["age"]);
    // print(person["work"]);

   //第二种定义 Maps的方式
    var p=new Map();
    p["name"]="李四";
    p["age"]=22;
    p["work"]=["程序员","送外卖"];
    print(p);
    print(p["age"]);    
}

Dart中的函数

自定义方法的基本格式:

  返回类型  方法名称(参数1,参数2,...){
    方法体
    return 返回值;
  }
void printInfo(){
  print('我是一个自定义方法');
}

int getNum(){
  var myNum=123;
  return myNum;
}

调用方法传参:

//调用方法传参
main() {
//1、定义一个方法 求1到这个数的所有数的和      60    1+2+3+。。。+60
  int sumNum(int n) {
    var sum = 0;
    for (var i = 1; i <= n; i++) {
      sum += i;
    }
    return sum;
  }

  var n1 = sumNum(5);
  print(n1);
  var n2 = sumNum(100);
  print(n2);

//2、定义一个方法然后打印用户信息

  String printUserInfo(String username, int age) {
    //行参
    return "姓名:$username---年龄:$age";
  }

  print(printUserInfo('张三', 20)); //实参

//3、定义一个带可选参数的方法 ,最新的dart定义可选参数需要指定类型默认值

  String printUserInfo2(String username, [int age = 0]) {
    //行参
    if (age != 0) {
      return "姓名:$username---年龄:$age";
    }
    return "姓名:$username---年龄保密";
  }

  print(printUserInfo2('张三', 21)); //实参
  print(printUserInfo2('张三'));

//4、定义一个带默认参数的方法
  String printUserInfo3(String username,[String sex='男',int age=0]){  //行参
    if(age!=0){
      return "姓名:$username---性别:$sex--年龄:$age";
    }
    return "姓名:$username---性别:$sex--年龄保密";
  }
  print(printUserInfo3('张三'));
  print(printUserInfo3('小李','女'));
  print(printUserInfo3('小李','女',30));

//5、定义一个命名参数的方法,最新的dart定义命名参数需要指定类型默认值

  String printUserInfo4(String username, {int age = 0, String sex = '男'}) {//行参
    if (age != 0) {
      return "姓名:$username---性别:$sex--年龄:$age";
    }
    return "姓名:$username---性别:$sex--年龄保密";
  }
  print(printUserInfo4('张三', age: 20, sex: '未知'));

//6、实现一个 把方法当做参数的方法

  var fn=(){
    print('我是一个匿名方法');
  };
  fn();

  //fn1方法
  fn1() {
    print('fn1');
  }

  //fn2方法
  fn2(fn) {
    fn();
  }

  //调用fn2这个方法 把fn1这个方法当做参数传入
  fn2(fn1);
}

箭头函数:

void main() {
/*需求:使用forEach打印下面List里面的数据*/

  List list=['苹果','香蕉','西瓜'];
  list.forEach((value){
    print(value);
  });
  list.forEach((value)=>print(value));

  //注意和方法的区别: 箭头函数内只能写一条语句,并且语句后面没有分号(;)
  list.forEach((value)=>{
    print(value)
  });

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值