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();
}

相关推荐

  1. Dart语法问答实践

    2024-07-17 02:14:01       16 阅读
  2. dart 基本语法

    2024-07-17 02:14:01       26 阅读
  3. Dart语言中的布尔类型详解及实例应用

    2024-07-17 02:14:01       49 阅读
  4. Dart语言的泛型

    2024-07-17 02:14:01       30 阅读
  5. 不依赖第三方平台,用Dart语言实现 ios 消息推送

    2024-07-17 02:14:01       42 阅读
  6. Dart语言中mixins的使用

    2024-07-17 02:14:01       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 02:14:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 02:14:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 02:14:01       58 阅读
  4. Python语言-面向对象

    2024-07-17 02:14:01       69 阅读

热门阅读

  1. c++将utf8转gb2312

    2024-07-17 02:14:01       24 阅读
  2. 理解 extern “C“:跨语言链接的桥梁

    2024-07-17 02:14:01       23 阅读
  3. 记录第一次因为数据库事务产生的BUG

    2024-07-17 02:14:01       19 阅读
  4. 量化机器人如何提升交易透明度?

    2024-07-17 02:14:01       23 阅读
  5. Flutter基本概念&常用命名

    2024-07-17 02:14:01       23 阅读
  6. AI对开发者的影响:重塑技能、职业与生活

    2024-07-17 02:14:01       24 阅读
  7. CloudCone服务器2核1G一年只需15刀

    2024-07-17 02:14:01       19 阅读