dart第一篇:dart基础

dart的变量是空安全的,即默认不能为空,如String a = null,编辑器会报错。如果想让某一个变量可以为空,则在定义的时候要在类型后面加?,即String? a = null,这样编辑器才不会报错。

dart可以通过三对单引号或者双引号来定义多行字符串,就好像Java17中的多行字符串一样,如String str = """a

b

c""";

dart中用int表示正数,double代表小数,num是这两个类的父类。没有其他的数字类。int与double计算,得到double。取余用%表示,整除用~/表示。

List的静态方法:

filled()用于生成一个指定长度和元素的数组,通过第三个参数决定生成的数组是定长还是不定长的,默认是定长的。

genetate()方法用于生成一个指定初始长度的数组,并且可以指定元素生成器以及数组是否定长。默认是不定长的。

 

 

List的实例方法:

void fillRange()方法用于把数组指定区间的元素都替换成一个其他元素,会修改原数组。如一个数组是[1, 2, 3, 4],其调用fillRange(0, 2)后会变为[5, 5, 3, 4]。

void replaceRange方法用于把数组指定区间的元素替换成一个新数组,会修改原数组,原数组长度可能会变。如一个数组是[1, 2, 3, 4],其调用replaceRange(0, 2, [5, 6, 7])后会变为[5, 6, 7, 3, 4]。

void removeRange(int start, int end)方法可以从源list中把指定索引区间的元素删掉,会改变原数组。

void removeWhere(bool test(E element))方法可以把满足指定条件的元素从数组中删除都删除,会改变原数组。

bool remove(Object? value)方法可以把指定元素从数组中删除。

E removeAt(int index)方法可以把指定索引处的元素从数组中删除。

E removeLast()方法可以把数组最后一个元素从数组中删除。

T fold()、T reduce()方法用于聚合,返回一个值,可用于求和、求乘积等聚合操作。

Iterable followedBy()方法可用于和另一个List实例拼接,如[1, 2].followedBy([3, 4])返回[1, 2, 3, 4]。

Iterable getRange()方法返回一个子数组。

void insert()方法用于往数组中指定位置处插入一个元素,会修改原数组,数组中指定位置处及之后的元素都会往后移。

void insertAll()方法用于往数组中指定位置处插入一个数组,会修改原数组,数组中指定位置处及之后的元素都会往后移。

String join()方法用于数组拼接,返回一个字符串。

Iterable where()方法用于从一个数组中把满足条件的元素都找出来。

Iterable<T> whereType<T>()方法用于从一个混编的数组中把指定类型的元素都找出来。

Map<int, E> asMap()把list转为一个map,key是索引,value是对应元素。在list.map().toList()的场景中,如果想对某个索引的元素做一些特殊处理,就可以先把list转map,然后获取此map的entries属性,再调用entries的map().toList(),即

    var list2 = list.asMap().entries.map((entry) {
      if (entry.key == 0) {
        // 特殊逻辑
        return entry.value;
      } else {
        return entry.value;
      }
    }).toList();

如果要把两个list拼合,那么可以用...。如a、b都是一个数组,想定义c等于a+b,则可以var c = [...a, ...b]。

 

可以通过is关键字来判断变量是否是某种类型,如bool flag = a is String,判断变量a是否是String类型。

可以通过identical()方法查看两个引用是否指向同一个对象。如

    String a = '1';
    String b = '1';
    bool c = identical(a, b);

 

实体类对象、Map、String之间相互转化

import 'dart:convert';

User user = User();

String str  = jsonEncode(user); // 实体类对象转字符串

Map<String, dynamic> map = jsonDecode(str);// 字符串转Map

User user  = User.fromJson(map);// Map转实体类

 

如果变量a的值是【如果b不等于null,则为b,否则为c】,则可以用String a  = b ?? c,如果用三目表达式的话,编辑器会提示要我们优化成这样。

 

!.用于

?.用于

posted on 2024-08-14 17:00  koushr  阅读(59)  评论(0)    收藏  举报

导航