自学内容网 自学内容网

Dart语法问答到实践

语法问答

  1. Dart语法输出调试信息的方法叫?

    print

  2. Dart语言里定义抽象类的关键字是?

    abstract

  3. Dart语言里String转Int的方法是?

    int.parse

  4. Dart语言的数据类型String是首字母大写,而int是首字母小写?

    受c/c++和java的影响,区分简单类型和引用类型,字符串是引用类型,是一个类的实例(类的命名规范是大写开头);int是简单类型。

知识要点

  • 基本数据类型
  • 类型判断,类型转换,级联操作
  • 集合类型
    • List
    • Set
    • Map
  • 函数的定义
    • 可选参数
    • 命名参数
    • 箭头函数
    • 异步async,await,Future类型
    • 构造函数
    • 内部,外部定义,静态
    • extends,implement,with
  • 外部库,内置库
  • 库的重命名,部分导入

基本语法

  1. Dart的特点

    Dart非常注重语义化

    Dart使用严格的分号

  2. Dart的基本数据类型

    数据类型:int、double、num

    字符串:String

    布尔:bool

    数组:List

    字典:Map

  3. Dart的常量类型,自动类型推断

    var:可以有多次赋值

    const: 只能在定义的时候赋值

    final:有且只有一次赋值机会的常量类型

  4. Dart的相关符号使用

    int.parse || double.parse:类型转换

    +:字符串拼接

    ${} || $:定义字符串的表达式

    “”" “”":定义多行字符串

    is:类型判断

    .runtimeType:类型获取(获取运行时的类型)

  5. Dart的List常用方法

    .add():只能添加一个元素

    .addAll():基于一个iterable类,两个数组合并,类似JavaScript的数组.concat方法

    .first:取第一个元素

    .lastt:取最后一个元素

    .shuffle():打乱原数组

    .retainWhere(()=>{}):根据条件保留

    .removeWhere(()=>{}):根据条件移除

    .removeRange(start,end):范围移除

    .remove():移除某个元素

    .removeAt():移除某个下标的元素

    .removeLast():移除末尾元素

    .fillRange(start,end,value):从start到end每个元素用value替换

    .insert(index,value):在某个下标插入一个元素

    .inser(index,list):在某个下标插入一个数组

    .setAll(index,list):从inde开发,逐个替换list中的元素

    .toList(growable:false):生成一个新数组,growable未false是一个固定长度,默认为true

    .join():所有元素连接成一个字符串

    .split():使用指定的分隔符字符串将一个String对象分割成子字符串数组

    .map():遍历现有的List的每个元素,并做处理,返回一个新得Iterable

    .reversed:获取反向的Iterable

    .take(count):从0开始取count个元素,并返回结果

    .takeWhile((e)=>(bool)):从0开始取,直至第一个不符合函数的元素,将其前面的元素都返回

    clear():清除所有值

  6. Dart的判断方法

    .contains():是否包含元素,包含为true,不包含为false

    .where(()=>{}):返回全部符合条件的元素

    .any((()=>{})):只要符合条件就返回true

    .every((()=>{})):只要不符合条件就返回false

  7. Dart的查找方法

    .forEach(()=>{}):遍历所有元素

    .firstWhere(()=>{}):返回第一个满足条件的元素(不是元素的inde)

    .laseWhere(()=>{}):从后往前找,返回第一个满足条件的元素(不是元素的inde)

    .indexWhere(()=>{}):返回第一个满足条件的元素的index

    .laseIndexWhere(()=>{}):从后往前找,返回第一个满足条件的元素的index

  8. Dart的类型转换

    .toSet():转为Set

    .asMap():转为Map

    .toList():转为List

    .toString():转为String

    int.parse():转为int

    double.parse():转为double

  9. Dart的Map的常用属性和方法

    注意:Map的key默认是字符串

    常用属性:

    ​ keys:获取所有的key的值

    ​ values:获取所有的value的值

    ​ isEmpty:判断字典是否为空

    ​ isNotEmpty:判断字典是否不为空

    常用方法:

    ​ remove(key):删除指定key的数据

    ​ addAll({…}):合并映射,给映射内增加属性

    ​ containsValue:查看映射内的值,返回true/false

    ​ update(key,()=>{}):根据指定的key对应的value做出修改,同时Map本身也会被修改

    ​ updateAll(()=>{}):根据参数内的函数修改Map

    ​ forEach:遍历Map,遍历时不可add或者remove

    ​ map:遍历每个键值对,根据参数函数对key,value做出修改,转换成其他泛型Map

    // eg
    Map<String,int> mapOne = {'a':1,'b':2};
    Map<int,String> mapTwo = mapOne.map((key,value){
        return MapEntry(value,key);
    })
    

    ​ clear():清除所有键值对

    ​ .where(()=>{}):返回全部符合条件的元素

    ​ .any((()=>{})):只要符合条件就返回true

    ​ .every((()=>{})):只要不符合条件就返回false

  10. Dart的函数定义

    1)参数

    // 1.参数
    func(name)
    // 2.强制类型
    func(String name)
    // 3.默认值
    func(String name = "name")
    // 4.可选参数
    func(name,[age,gender])
    // 5.命名参数
    func(name,{age,gender})
    

    2)箭头函数:和JavaScript不一样,Dart的箭头函数只能写一“行”(严谨说法:只能写一个表达式)

    3)自执行方法:((){})();

    4)异步:async,await(Future类型)

    bar() async{
        return "hello";
    }
    // 1.形式1
    foo1() async{
        String value = await bar();
        print(value);
    }
    // 2.形式2
    foo2() {
        return Future(bar).then((value)=>print(value));
    }
    
    
  11. Dart的类(class)

    1)默认成员是public,加_变为私有(同一个文件可以访问,不同文件不可以访问)

    2)构造函数,初始化构造

    3)静态方法和静态属性

    ​ 非静态方法可以访问静态或非静态成员

    ​ 静态方法只可以访问静态成员

    4)…:连缀操作

    Person p = new Person();
    // 加分号即为结束
    p..name="name"
     ..age=12;
    

    5)抽象abstract

    ​ 抽象类通过abstract关键字来定义

    ​ 抽象类中不实现的方法体就叫抽象方法

    ​ 抽象类不能被new(实例化),只有继承或实现它的子类可以实例

    用法:

    ​ 复用抽象类的方法,并且希望用抽象方法约束子类实现,那就用extends

    ​ 只是把抽象类当标准,那就用implements

    ​ 注意先后顺序:extends->mixins->implements

    6)继承extends

    ​ 继承抽象类,则必须实现抽象类中的抽象方法

    7)混入with(mixins)

    ​ 作为混入的类只能继承自Object

    ​ 没有构造函数

    ​ 可以混入多个,如果有相同方法,后者会替换前者

    8)实现implements

    ​ 实现抽象类,则必须实现抽象类的所有属性和方法

  12. Dart的文件引入

    show:部分导入

    hide:部分不导入

  13. Dart的库

    内置库

    import "package:flutter/material.dart";
    import "dart/math";
    

    外部库

    https://pub.dev/packages
    https://pub.dartlang.org/flutter
    

    自定义库

实践

题目:实现⼀个抽象类Vehicle,定义数值⻋轮wheels,定义抽象⽅法 getWheelsNum。实现⼀个汽⻋类继承⾃Vehicle。新建汽⻋实例调 ⽤getWheelsNum打印⽇志wheels数值。

abstract class Vehicle {
  int wheels = 0;
  getWheelsNum();
}

class Car extends Vehicle {
  
  getWheelsNum() {
    print(wheels);
  }
}

main() {
  Car car = new Car();
  car.getWheelsNum();
}

原文地址:https://blog.csdn.net/qq_44186810/article/details/140478112

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!