Dart 的使用(基础)

Dart核心语言基础 集合 Map使用指南 Map 是 Dart 中一种非常重要的集合类型,它表示一组 键值对(key-value pairs)的集合 阅读详情

Dart 的使用

安装配置

1.使用Dart 语言 首先需要配置Dart环境,那么我们就需要下载 dart SDK ,然后找到bin文件夹路径,配置到环境变量

2.编辑器的选择,我们用什么去书写dart。 选择vscode ,可以安装插件 dart ,后续还会用到flutter ,因此一起安装,方便运行编译,安装下 run code插件

简单使用

1.dart 的入口是main函数

2.在dart中打印内容使用print

3.dart中函数的定义

4.main函数参数的作用和使用方法

变量声明

1.明确推到

  • 类型 变量名称 = 赋值

2.类型推倒

  • var / const / finall / dynamic
  • 区别 var声明后可以改变变量,但是类型不能改变
  • const 是声明一个常量,且这个常量只能通过 直接得到,不能推倒得出
  • finall 也是声明一个常量,但是这个常量可以推倒得出,比如函数
  • dynamic 声明一个变量, 变量可以改变,并且可以改变变量类型

字符串和数字之间的转换

  • 字符串和数字转换

    • var one = int.parse('111');
      var two = double.parse('12.22');
      print('${one} ${one.runtimeType}'); // 111 int
      print('${two} ${two.runtimeType}'); // 12.22 double
      
  • 数字转字符串

    • var num1 = 123;
      var num2 = 123.456;
      var num1Str = num1.toString();
      var num2Str = num2.toString();
      var num2StrD = num2.toStringAsFixed(2); // 保留两位小数
      print('${num1Str} ${num1Str.runtimeType}'); // 123 String
      print('${num2Str} ${num2Str.runtimeType}'); // 123.456 String
      print('${num2StrD} ${num2StrD.runtimeType}'); // 123.46 String
      
  • Bool类型

    • dart中没有非 0 即真的写法
    • dart 中也没有 非空即真的写法
  • 字符串类型

    • 字符串的定义方式

      • var message1 = 'hello world';
        var message2 = 'hello fultter';
        var message3 = '''abc cba 
        bac''';
            
        
    • 字符串的拼接

      • final name = 'why';
        final age = 18;
        final height = 1.88;
        print("name":$name age:$age height:$height);
        
  • 集合类型

    • List类型

    • // 1.List 类型 ['元素1','元素2','元素3']
      List<String> names = ['alger', 'jams', 'kobe', 'alger', 'jams'];
      // 1.1 数组去重
      List<String> names1 = [];
      for (String name in names) {
        print(name);
        if (!names1.contains(name)) {
          names1.add(name);
        }
      }
      print(names1);
      // 1.2数组去重
        List<String> names2 = List.from(Set.from(names));
        print(names2);
      
      
    • 2.Set 类型

       //  使用场景  对list 元素进行去重
       Set<int> ages = {1, 2, 23, 3, 3};
      
    • 3.map 类型

    • Map<String, dynamic> fruits = {'苹果': 1, '香蕉': 2, '梨子': true};
        print(fruits['苹果']);
      
  • 集合的常见操作

    • 获取集合的长度 letters.length

    • 对于List而言,由于元素是有序的,他还提供了一个删除索引位置上元素的方法

      // 添加/删除/包含元素
      numbers.add(5);
      numbersSet.add(5);
      print('$numbers $numbersSet');
      
      numbers.remove(1);
      numbersSet.remove(1);
      print('$numbers $numbersSet');
      
      print(numbers.contains(2));
      print(numbersSet.contains(2));
      
      // List根据index删除元素
      numbers.removeAt(3);
      print('$numbers');
      
  • Map的操作

    由于它有key和value,因此无论是读取值,还是操作,都要明确是基于key的,还是基于value的,或者是基于key/value对的。

    // Map的操作
    // 1.根据key获取value
    print(infoMap1['name']); // why
    
    // 2.获取所有的entries
    print('${infoMap1.entries} ${infoMap1.entries.runtimeType}'); 
    // (MapEntry(name: why), MapEntry(age: 18)) MappedIterable<String, MapEntry<String, Object>>
    
    // 3.获取所有的keys
    print('${infoMap1.keys} ${infoMap1.keys.runtimeType}'); 
    // (name, age) _CompactIterable<String>
    
    // 4.获取所有的values
    print('${infoMap1.values} ${infoMap1.values.runtimeType}'); 
    // (why, 18) _CompactIterable<Object>
    
    // 5.判断是否包含某个key或者value
    print('${infoMap1.containsKey('age')} ${infoMap1.containsValue(18)}'); // true true
    
    // 6.根据key删除元素
    infoMap1.remove('age');
    print('${infoMap1}'); // {name: why}
    

函数

  • 函数的基本定义

    Dart 是一种真正的面向对象语言,所以即使函数也是对象,所以也有类型,类型就是Function. 这样就意味着函数可以作为变量定义或者作为其他函数的参数或者返回值

  • 函数的定义方式

    返回值类型  函数的名称(参数列表){
    	函数体
    	return 返回值
    }
    

    按照上面的定义方式,我们定义一个完整的函数

    int sum(num num1, num num2){
    	return num1 + num2;
    }
    

    另外,如果函数中只有一个表达式,那么可以使用箭头语法

    ​ 注意,这里面只能是一个表达式,不能是一个语句

    sum(num2,num2) => num1 + num2

  • 函数的参数问题

    • 函数的参数可以分成两类:必须参数 和 可选参数
    • 前面使用的参数都是必须参数
  • 可选参数

    • 可选参数可以 分为 命名可选参数 和 位置可选参数

      • 命名可选参数用 { } 位置可选参数 用 [ ]
    • 命名可选参数: {param1, param2, ...}
      位置可选参数: [param1, param2, ...]
      
    • // 命名可选参数
      printInfo1(String name, {int age, double height}) {
        print('name=$name age=$age height=$height');
      }
      
      // 调用printInfo1函数
      printInfo1('why'); // name=why age=null height=null
      printInfo1('why', age: 18); // name=why age=18 height=null
      printInfo1('why', age: 18, height: 1.88); // name=why age=18 height=1.88
      printInfo1('why', height: 1.88); // name=why age=null height=1.88
      
      // 位置可选参数   定义位置可选参数
      printInfo2(String name, [int age, double height]) {
        print('name=$name age=$age height=$height');
      }
      
      // 调用printInfo2函数
      printInfo2('why'); // name=why age=null height=null
      printInfo2('why', 18); // name=why age=18 height=null
      printInfo2('why', 18, 1.88); // name=why age=18 height=1.88
      
    • 参数可以有默认值,在不穿如的情况下,使用默认值

      • 注意,只有可选参数才可以有默认值,必须参数不能有默认值

      • // 参数的默认值
        printInfo4(String name, {int age = 18, double height=1.88}) {
          print('name=$name age=$age height=$height');
        }
        
  • 函数是一等公民

    • 在很多语言中,函数并不能作为一等公民来使用,比如 Java 、 oc 这种限制让编程不够灵活,所以现代编程语言基本都支持函数作为一等公民来使用 Dart也支持

      这就意味着你可以将函数赋值给一个变量,也可以将函数作为另一个函数的参数或者返回值来使用

      main(List<String> args) {
        // 1.将函数赋值给一个变量
        var bar = foo;
        print(bar);
      
        // 2.将函数作为另一个函数的参数
        test(foo);
      
        // 3.将函数作为另一个函数的返回值
        var func =getFunc();
        func('kobe');
      }
      
      // 1.定义一个函数
      foo(String name) {
        print('传入的name:$name');
      }
      
      // 2.将函数作为另外一个函数的参数
      test(Function func) {
        func('coderwhy');
      }
      
      // 3.将函数作为另一个函数的返回值
      getFunc() {
        return foo;
      } 
      
  • 匿名函数的使用

    • 大部分我们定义的函数都会有自己的名字,比如前面定义的foo . test函数等
    • 但是某些情况下,给函数命名太麻烦了,我们可以使用没有名字的函数,这种函数可以被称之为匿名函数 ,也可以叫 lamda 或者 closure
    main(List<String> args) {
      // 1.定义数组
      var movies = ['盗梦空间', '星际穿越', '少年派', '大话西游'];
    
      // 2.使用forEach遍历: 有名字的函数
      printElement(item) {
        print(item);
      }
      movies.forEach(printElement);
    
      // 3.使用forEach遍历: 匿名函数
      movies.forEach((item) {
        print(item);
      });
      movies.forEach((item) => print(item));
    }
    

运算符

  • 除法、整除、取模运算

    var num = 7;
    print(num / 3); // 除法操作, 结果2.3333..
    print(num ~/ 3); // 整除操作, 结果2;
    print(num % 3); // 取模操作, 结果1;
    
  • ??= 赋值操作 (有点三目运算符的味道)

    当变量null时,使用后面的内容进行赋值

    当变量有值时,使用自己原来的值

  • main(List<String> args) {
      var name1 = 'coderwhy';
      print(name1);
      // var name2 = 'kobe';
      var name2 = null;
      name2 ??= 'james'; 
      print(name2); // 当name2初始化为kobe时,结果为kobe,当初始化为null时,赋值了james
    }
    
  • 条件运算符

    Dart 中包含一致比较特殊的条件运算符 : expr1 ?? expr2

    如果expr1 是 null ,则返回expr2的结果

    如果expr1 不是 null ,直接使用expr1的结果

    var temp = 'why';
    var temp = null;
    var name = temp ?? 'kobe';
    print(name);
    
  • 级联语法: …

    • 某些使用,我们希望对一个对象进行连续的操作,这个可以使用级联语法

    • class Person {
        String name;
      
        void run() {
          print("${name} is running");
        }
      
        void eat() {
          print("${name} is eating");
        }
      
        void swim() {
          print("${name} is swimming");
        }
      }
      
      main(List<String> args) {
        final p1 = Person();
        p1.name = 'why';
        p1.run();
        p1.eat();
        p1.swim();
      
        final p2 = Person()
                    ..name = "why"
                    ..run()
                    ..eat()
                    ..swim();
      }
      
  • if 和 else !!!!用法跟 JS中一致,但是不支持非空即真或者 非0即真,必须明确的bool类型

  • 循环操作 for , for in , while , do - while

  • switch - case !!!注意:每个case语句,默认情况下必须以一个break结尾,防止case穿透

类和对象

类的定义
  • 在Dart中,定义类 用class关键字

  • 类通常有两部分组成:成员(member) 和 方法 (method)

  • class 类名 {
    	类型 成员名:
    	返回值类型  方法名(参数列表) {
    		方法体
    	}
    }
    
    • 这里又一个注意点:我们在方法中使用属性(成员/实例变量)时,并没有加this;
    • Dart 的开发风格中,在方法通常使用属性时,会省略this, 但是有命名冲突时候,this不能省略
构造方法

​ 我们知道,当通过类创建一个对象时,会调用这个类的构造方法

  • 当类中没有明确的构造方法时,将默认拥有一个无参的构造方法

  • 前面的Person 中我们就是在调用这个构造方法

    我们也可以根据自己的需求,定义自己的构造方法

  • 注意一: 当有了自己的构造方法时,默认的构造方法将会失效,不能使用

    • 当然,你可能希望明确的写一个默认的构造方法,但是会和我们自定义的构造方法冲突
    • 这是因为Dart本身不支持函数的重载(名称相同,参数不同的方式)
  • 注意二:这里我还实现了 toString方法

class Person {
  String name;
  int age;

  Person(String name, int age) {
    this.name = name;
    this.age = age;
  }

  @override
  String toString() {
    return 'name=$name age=$age';
  }
}

另外,在实现构造方法时,童话村做的事情就是通过 **参数 ** 给 属性 赋值. 为了简化这一过程,Dart提供了一种更加简洁的语法糖形式

 Person(String name, int age) {
    this.name = name;
    this.age = age;
  }
  // 等同于
  Person(this.name, this.age);
命名构造方法

开发中我们需要用到更多的构造方法,但是由于dart不支持函数重载,所以我们不能够创建相同名称的构造方法,那就创建不同的

class Person {
  String name;
  int age;

  Person() {
    name = '';
    age = 0;
  }
	// 命名构造方法
  Person.withArgments(String name, int age) {
    this.name = name;
    this.age = age;
  }

  @override
  String toString() {
    return 'name=$name age=$age';
  }
}

// 创建对象
var p1 = new Person();
print(p1);
var p2 = new Person.withArgments('why', 18);
print(p2);


// 比如map转成对象,可以提供如下的构造方法
  // 新的构造方法
	Person.fromMap(Map<String, Object> map) {
    this.name = map['name'];
    this.age = map['age'];
  }

	// 通过上面的构造方法创建对象
  var p3 = new Person.fromMap({'name': 'kobe', 'age': 30});
  print(p3);
初始化列表

我们来重新定义一个陪 Point ,传入 x/y ,可以得到他们的距离 distance

class Point {
  final num x;
  final num y;
  final num distance;

  // 错误写法
  // Point(this.x, this.y) {
  //   distance = sqrt(x * x + y * y);
  // }

  // 正确的写法
  Point(this.x, this.y) : distance = sqrt(x * x + y * y);
}
 
重定向构造方法

在某些情况下, 我们希望在一个构造方法中去调用另外一个构造方法, 这个时候可以使用重定向构造方法:在一个构造函数中,去调用另外一个构造函数(注意:是在冒号后面使用this调用)

class Person {
  String name;
  int age;

  Person(this.name, this.age);
  Person.fromName(String name) : this(name, 0);
}

常量构造方法

某些情况下,传入相同值时,我们希望返回同一个对象,这个时候,可以使用常量构造方法.默认情况下,创建对象时,即使传入相同的参数,创建出来的也不是同一个对象

main(List<String> args) {
  var p1 = Person('why');
  var p2 = Person('why');
  print(identical(p1, p2)); // false
}

class Person {
  String name;

  Person(this.name);
}

但是, 如果将构造方法前加const进行修饰,那么可以保证同一个参数,创建出来的对象是相同的

  • 这样的构造方法就称之为常量构造方法。
main(List<String> args) {
  var p1 = const Person('why');
  var p2 = const Person('why');
  print(identical(p1, p2)); // true
}

class Person {
  final String name;

  const Person(this.name);
}

常量构造方法有一些注意点:

  • 注意一:**拥有常量构造方法的类中,所有的**成员变量必须是final修饰的.

  • 注意二:

    为了可以通过常量构造方法,创建出相同的对象,不再使用 new关键字,而是使用const关键字
    • 如果是将结果赋值给const修饰的标识符时,const可以省略.
工厂构造方法

Dart提供了factory关键字, 用于通过工厂去获取对象

main(List<String> args) {
  var p1 = Person('why');
  var p2 = Person('why');
  print(identical(p1, p2)); // true
}

class Person {
  String name;

  static final Map<String, Person> _cache = <String, Person>{};

  factory Person(String name) {
    if (_cache.containsKey(name)) {
      return _cache[name];
    } else {
      final p = Person._internal(name);
      _cache[name] = p;
      return p;
    }
  }

  Person._internal(this.name);
}
2026.5.3:Ubuntu26.04下uv所需的环境变量pyproject.toml 本文档提供了Python开发环境的配置指南。主要包括: 设置环境变量(HF_ENDPOINT、UV_PYTHON_INSTALL_MIRROR等) 创建pyproject.toml配置文件,定义项目元数据(名称、版本等) 指定依赖项(torch系列库)及其安装源(PyTorch官方CUDA 12.8镜像) 配置Python版本要求(>=3.13,<3.14) 设置平台限制(Linux/Windows) 该配置适用于需要PyTorch CUDA 12.8支持的项目开发环境搭建。 阅读详情

相关推荐

Vue3项目实战:集成h265webjs打造高性能Web端H.265播放器

本文详细介绍了如何在Vue3项目中集成h265webjs库,构建高性能的Web端H.265播放器。通过封装播放器管理模块、利用Vue3组合式API优雅管理生命周期,并提供了从环境准备、核心集成到进阶优化的完整实战指南,有效解决了浏览器原生不支持H.265解码的难题,显著降低视频流带宽占用。

weixin_29016833的博客 361

Dart 语言基础分步指南

Dart语言基础官方文档参考Dart 语言学习开始的提前准备工作Dart 0000、Dart基本运行环境Dart 0001、变量与类型Dart 0002、流程控制语句Dart 0003、函数Dart 0004、类和对象Dart 0005、继承与多态Dart 0006、抽象类与接口Dart 0007、静态与权限Dart 0008、异步支持 官方文档参考 Dart 中文文档 Dart 在线编译器 Dart 语言概览 Dart Code Dart 语法 Dart 语言学习开始的提前准备工作 先下载一个VSCo

慢慢来就很快。 981

基于物联网技术智慧园林绿化养护管理信息平台

近几年来,随着经济不断的发展,城市面积不断的扩大,城市管理中的园林绿化工作也在这种趋势下不断的发生着深刻改变。管养企业是否按制定的管养计划严格执行?绿化事件整改是否及时到位?绿地面积是否在稳步增长?管养的效果如何?如何客观评价管养企业的管养工作?这些都是我们各级管理者需要面对的问题。   智慧园林绿化养护管理信息平台的开发思路以“考核”为核心,整个信息平台体现出“新、快、高、全、享”五个特点。   智慧园林绿化养护管理信息平台的整个开发理念为:依托五大技术手段(全球卫星定位系统技术、地理信...

Cesium的博客QQ2252224326 2459

dart入门基础

随教程学习,过程记录,笔记,总结归纳

m0_48853274的博客 3013

2019年上交电院计算机直博保研经历

本人选报的是上交六月一日在武汉举办的直博选拔,五月三十一日到达酒店,地点在武汉大学旁边(PS:上交是不管住宿、来回车票的,~划重点~包括夏令营),入住后当然是紧张的准备英语面试等等内容了,当天我是排在了下午面试,感觉还很好,上午可以多睡一会,最好能够去踩踩点上午,然后下午面试一定要早去,说是一点开始,但是老师十二点半就开始让学生进去了,有一个同学排在第二个,但是当时叫到他时还不到一点,没到,最后据...

LifeMaker的博客 4892

从零搭建 AI 运维 Agent:告警自动诊断 + 修复的完整技术方案

适合读者:管理 5-50 台服务器的运维/SRE 工程师、技术负责人 技术栈:FastAPI + React + PostgreSQL + Redis + DeepSeek 关键词:AI运维、AIOps、自动化运维、智能告警、告警修复、Runbook自动化、DevOps、SRE、DeepSeek运维

weixin_38359457的博客 1640

Dart语法——看这一篇就够了

支持可选参数,可选命名参数用{}包围,可选位置参数写在最后并且使用[]包围 String say(String from, String msg, [String device]);expr2,如果expr1是non-null,返回其值。否则执行expr2并返回其结果;支持字符串模板,用${expression}的方式来实现字符串效果,类似如字符串拼接;// 上面两种写法有区别,第一种是如果是true就执行里面的内容,false就不执行;其中List,Set,Map不是抽象接口,是具体实现类,可直接使用;

2401_87029852的博客 1089

ABAP 7.40 新语法介绍系列之二 - ABAP 类型转换操作符 CONV

这个lv_input_s变量的唯一使命,就是接收来自 char10 类型的 lv_input_c 变量的值,然后传递到 print 方法里去。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1416

Dart语言的基本使用

定义:在Dart语言中,函数是代码组合和复用的核心单元定义:Dart语言中,类(class)是面向对象编程的核心,类包含属性和方法来定义对象的行为和状态**需求:**定义一个Person类,属性包括姓名、年龄、性别,包括学习的方法定义类语法:class Person {属性 方法}实例化对象:Person 变量=Person()属性和方法: 变量.属性/方法()p.name = '王';p.age = 20;p.Study();print("$age的$name在学习");

s057450的博客 452

YOLO26模型应用过程中的报错处理及疑问解答,涉及环境搭建、模型训练、模块改进、论文写作

本文记录了YOLO26模型的这一系列过程中可能发生的问题,以及大家非常关心的问题,这里统一做了一个记录和解答。

Limiiiing的博客 240

多模态论文笔记——BLIP

本文详细介绍这几年AIGC火爆的隐藏功臣,多模态模型:BLIP。

haopinglianlian的博客 2454

Dart 语法基础教程

本教程涵盖了 Dart 语法基础,包括变量、数据类型、运算符、控制流程和函数。通过学习这些基础知识,您可以开始编写简单的 Dart 程序。注意: 这是一个入门教程,还有很多高级的 Dart 特性尚未涵盖,例如泛型、异步编程、异常处理等等。您可以参考 Dart 官方文档了解更多信息。

u011464172的专栏 1582

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

[基础] Dart - 类的使用

类的使用 关于Dart 语言的基础学习记录 Dart 官方网站 对象的声明调用 继承 重载 一、对象的声明和调用 //声明一个对象 class People { int age; String Name; Say() => print("Hello I am $Name"); } void main() { //创建对象 给对象内的变量赋值 调用Say方法 ...

RyccccCode 449

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【Flutter从入门到实战】 ②、Dart基础语言、Dart函数的使用、Dart特殊运算符、Dart的面向对象

【Flutter从入门到实战】 ②、Dart基础语言、Dart函数的使用、Dart特殊运算符、Dart的面向对象

慢慢来就很快。 1822

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Dart 基础语法使用

Dart语法学习 目录 参考资料 语言特性 关键字 变量与常量 数据类型 运算符 operators 控制流程语句 异常 Exceptions 函数 Function 类 Class 类-方法 类-抽象类 类-隐式接口 类-扩展一个类(重写) 库和可见性 异步支持 参考资料 【官方文档】 【极客学院】 【author:AWeiLove...

BurningMyself 277

一篇文章学习Dart,为使用Flutter打基础

认识Dart Dart这门语言比较奇葩一点,他拥有很多java的特性,但是写法却和js很像,学习这门语言的根本目的也是不得已而为之,毕竟学习flutter的话,dart不学习是不行的,这篇文章就是简单的写一下dart中我们需要注意的一些点,和js以及java的不同之处,如果您有java和js的基础的话,那么学习这门语言将会异常的简单。 基本语法概述 基本的写法和js保持一致,写一个简单的demo,包含了基本的写法,强调几个点和js的区别 常量:和js语法一致,均是使用const,但是多了一个fin

红岸基地 1203

dart基础类型与方法使用

overrideString toString() => '入参${thisargs不能为空';print(a);print('异常对象' + e.toString());print('异常追踪信息' + s.toString());print('无论是否有异常,都会执行');

qq_21383977的博客 303

Dart基础学习03--方法的使用

1.本文主要讲一下Dart中的方法是怎么定义的,下面先看一个简单的例子:void printNumber(num number) { print('The number is $number.'); }2.虽然Dart的编程规范推荐定义方法是要明确变量类型,但其实上面的代码我们完全可以写作:printNumber(number) { // Omitting types is OK. prin

读万卷书,行万里路 848

stream流map 多个字段_Dart基础——如何在Dart&Flutter中使用Stream

1 什么是Stream?Stream是Dart用来处理异步的API,和同样用来处理异步的Future不同的是,Stream可以异步的返回多个结果,而Future只能返回一个,如果你对Future有疑问,可以参考作者的上一篇文章,Dart基础——Dart异步Future与事件循环Event Loop。2 如何创建Stream?1.1使用Stream的构造方法Stream periodicStream...

weixin_29133151的博客 699

Dart基础第七篇:Dart面向对象之构造函数&get、set方法的使用

class Person{ String name; int age; /** * 默认构造函数相当于:Person(String name,int age){ * this.name = name; * this.age = age}; */ //Person(this.name, t...

一花一世界 一叶一菩提 8534

Dart基础第十三篇:Dart之泛型、泛型方法、泛型类的创建及使用

/** * Dart之泛型: * 泛型就是解决类 接口 方法的复用性 以及对不特定数据类型的支持 */ /** * 创建一个泛型方法 * 下面这个方法没有指定返回参数 但是可以指定返回值的类型而且指定的返回类型必须要和返回值相对应 */ T returnGenerics<T>(T value){ return value; } /** * 泛型方法的使用 Li...

一花一世界 一叶一菩提 3252

【dart】dart基础学习使用(一):变量、操作符、注释和库操作

介绍了Dart语言的基本类型、库使用、注释。

qq_2511276124的博客 696

Flutter基础 -- Dart 语言 -- 进阶使用

泛型 generics 同步sync 异步async 生成器 generate 类型定义typedef 空安全 扩展extension

原来45的博客 1642

Flutter基础学习之 使用Dart Extension,帮你扩充常用类的功能

文章目录扩展 String 的功能使用扩展功能 最近在学习Flutter,还是遇到Extension这个高级功能,所以有必要去了解一下。 Flutter 是基于Dart这个语言的。在Dart 2.7 版本中,新加入了一个重要的语法功能,叫做extension。Extension的主要功能给已经存在的类添加新的member function,往里面增加新的函数。通过extension, 我们可以向诸如 Iterable , String 这样的常用类里面增加一些方便的函数。 扩展 String 的功能 我们创

单片机菜鸟哥的博客 1334

Dart基础第十四篇:Dart之类库的使用 自定义库 第三方库

//引用自定义库 使用show来专门引用库内的某个方法 import 'lib/TestLib.dart' show testLib; //系统内置库 import 'dart:math'; //第三方库 import 'dart:convert' as convert; import 'package:http/http.dart' as http; /** * 在Dart中,库的使用...

一花一世界 一叶一菩提 1772
上一篇: react-navigation 5X版本总结
下一篇: flutter知识点总结
大大黄、
博客等级 码龄8年 22粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值