Flutter - Dart 基础(数据类型)

简介: 【2月更文挑战第3天】

数据类型

Dart 中的一切皆是对象,包括数字、布尔值、函数等,每个对象都是一个实例,它们都继承于 Object,所以它们的默认值也就是 null

在 Dart 主要有:

  • 字符串类型(String)
  • 数字类型(int、double)
  • 布尔类型(bool)
  • 集合类型(List,Set,Map)
  • Runes 类和 Symbols 类型(后两个用的并不太多)

字符串类型(String)

  • 使用 ''"" 创建,使用带有单引号或双引号的三重引号可以创建多行字符串
    ```js
    // 双引号字符串
    var str1 = "单行字符串";

    // 单引号字符串
    var str2 = '单行字符串';

var str3 = '''
多行字符串
多行字符串
多行字符串
''';
```   
  • 字符串和其他变量或表达式拼接: 使用 ${expression},如果表达式是一个标识符,那么 {} 可以省略

      var name = 'dart';
      var version = '2.1.7';
    
      print('language is ${name}, version is $version'); 
      //language is dart, version is 2.1.7
    
  • 字符串拼接,使用 +

      var str4 = "Hello";
      var str5 = "world";
      var str6 = str4 + ' ' + str5 + ' ';
      print(str6); //Hello world
    

数字类型(int、double)

  • Number 类型有量两种分别是 intdouble
    ```js
    var height = 180;
    print(height.runtimeType); //int
var weight = 70.0;
print(weight.runtimeType);  //double
```
  • 字符串和数字的转化

    • 字符串转数字

        // String -> int
        var height = int.parse("180");
        print(height.runtimeType);  //int
      
        // String -> double
        var weight = double.parse("70.0");
        print(weight.runtimeType);  //double
      
    • 数字转字符串

        // int -> String
        var height = 180.toString();
        print(height.runtimeType);  //String
      
        // double -> String
        var weight = 70.0.toString();
        print(weight.runtimeType);  //String
      
    • 保留小数

        var value = 1.234567;
        print(value.toStringAsFixed(2));  //1.23
      

布尔类型(bool)

bool 类型是编译时常量,分别是:

  • true
  • false

集合类型(List,Set,Map)

List

  • List 的创建

    • 根据类型推导的 List

        var list = [1, 2, 3, 4];
      
    • 明确类型的 List

        List<int> arr = [1, 2, 3, 4];
      
  • List 常用属性

      var list = ["A", "B", "C", "D"];
      //获取list长度
      print(list.length);  //4
      //list是否为空
      print(list.isEmpty);  //false
      //list是否有元素
      print(list.isNotEmpty); //true
      //翻转 
      print(list.reversed); //(D, C, B, A)
      //查看List中是否存在指定元素
      print(list.contains("A")); //true
    
  • List 常用方法

    • 添加新元素到list
        var list = ["A", "B", "C", "D"];
        list.add("E");
        print(list); //[A, B, C, D, E]
      
    • 将另外一个list拼接到当前的list后面

        var list = ["A", "B", "C", "D"];
        var arr = ["X", "Y", "Z"];
        list.addAll(arr);
        print(list); //[A, B, C, D, E, X, Y, Z]
      

      简写(使用扩展操作符(...))

        var arr = ["X", "Y", "Z"];
        var list = ["A", "B", "C", "D", ...arr];
        print(list); //[A, B, C, D, E, X, Y, Z]
      
    • 删除指定元素

        var list = [1, 2, 3, 4, 5, 6, 7, 8, 9];
      
        list.removeAt(5);
        print(list);  //[1, 2, 3, 4, 6, 7, 8, 9]
      
    • 清除所有元素

        list.clear();
        print(list);  //[]
      
    • 使用setRange方法
        //将list中的第一个参数到第二个参数之前的元素替换为mList中的元素
        var list = ["A", "B", "C", "D", "E", "F", "G"];
        var mList = ["x", "y", "z"];
        list.setRange(2, 4, mList);
        print(list); //[A, B, x, y, E, F, G]
      
  • var list = ["A", "BB", "C", "DD", "E", "FF", "G"];
    //获取第一个元素
    print(list.first); //A
    //获取最后一个元素
    print(list.last); //G
    
    //查看List中是否存在指定元素
    print(list.contains("C")); //true
    
  • 遍历

      var list = ["A", "B", "C", "D"];
    
        for (var i = 0; i < list.length; i++) {
         
          print(list[i]);
        }
    
        list.forEach((element) {
         
          print(element);
        });
    
        for (var item in list) {
         
          print(item);
        }
    

Set

  • 使用 {} 创建 Set,是一个元素唯一的无序的集合类型
  • 各个属性、方法同 List

Map

  • 使用 {} 创建 Map

      // 可变Map
      Map map = {
         "key": "value"};
      var map = {
         "key": "value"};
    
      // 不可变Map
      var map = const {
         "key": "value"};
    
      // 设置键值类型
      Map<String, Object> mMap = {
         };
      mMap["str"] = 123;
      mMap["num"] = "123";
    
  • 常用属性方法

      var map = {
         };
      map["name"] = "小明";
      map["age"] = 12;
      print(map); //{name: 小明, age: 12}
    
      // 键值对个数
      print(map.length); //2
      // 是否为空
      print(map.isEmpty); //false
      // 所有key
      print(map.keys); //(name, age)
      // 所有value
      print(map.values); //(小明, 12)
      // 是否包含address
      print(map.containsKey("address")); //false
    
      // 删除键值对
      map.remove("age");
      print(map); //{name: 小明}
    
      // 修改键值对
      map["age"] = 18;
      print(map); //{name: 小明, age: 18}
    
目录
相关文章
|
2月前
|
Dart
如何在 Flutter 项目中使用 Dart 语言?
如何在 Flutter 项目中使用 Dart 语言?
127 58
|
4天前
|
Dart
flutter dart mixin 姿势
flutter dart mixin 姿势
|
15小时前
|
Dart 安全 编译器
Flutter结合鸿蒙next 中数据类型转换的高级用法:dynamic 类型与其他类型的转换解析
在 Flutter 开发中,`dynamic` 类型提供了灵活性,但也带来了类型安全性问题。本文深入探讨 `dynamic` 类型及其与其他类型的转换,介绍如何使用 `as` 关键字、`is` 操作符和 `whereType&lt;T&gt;()` 方法进行类型转换,并提供最佳实践,包括避免过度使用 `dynamic`、使用 Null Safety 和异常处理,帮助开发者提高代码的可读性和可维护性。
59 1
|
19天前
|
Dart 开发者 Windows
flutter:dart的学习
本文介绍了Dart语言的下载方法及基本使用,包括在Windows系统上和VSCode中的安装步骤,并展示了如何运行Dart代码。此外,还详细说明了Dart的基础语法、构造函数、泛型以及库的使用方法。文中通过示例代码解释了闭包、运算符等概念,并介绍了Dart的新特性如非空断言操作符和延迟初始化变量。最后,提供了添加第三方库依赖的方法。
25 12
|
3月前
|
Dart 前端开发 JavaScript
Flutter&Dart-异步编程Future、Stream极速入门
Flutter&Dart-异步编程Future、Stream极速入门
70 4
Flutter&Dart-异步编程Future、Stream极速入门
|
3月前
|
Dart JavaScript 前端开发
Dart或Flutter中解决异常-type ‘int‘ is not a subtype of type ‘double‘
Dart或Flutter中解决异常-type ‘int‘ is not a subtype of type ‘double‘
116 4
|
3月前
|
Dart
Flutter笔记:手动配置VSCode中Dart代码自动格式化
Flutter笔记:手动配置VSCode中Dart代码自动格式化
372 5
|
3月前
|
Dart 开发工具 Android开发
Android Studio导入Flutter项目提示Dart SDK is not configured
Android Studio导入Flutter项目提示Dart SDK is not configured
237 4
|
4月前
|
JSON Dart 安全
Flutter Dart Macro 宏简化 JSON 序列化
今天我们将会体验 dart 语言新特性 macro 宏,来实现对 json 的序列化,用到的包是官方实验室写的 json 包。 本文将会一步步的带你实现这个功能,那我们开始吧。
Flutter Dart Macro 宏简化 JSON 序列化
|
3月前
|
Dart 安全 API
Android跨平台开发之Dart 3.5 与 Flutter 3.24:革新跨平台应用开发
【Dart 3.5 与 Flutter 3.24:革新跨平台应用开发】首发于公众号“AntDream”。本文深度解析 Dart 3.5 和 Flutter 3.24 的新特性,包括空安全强化、Web 与原生互操作性增强及 Flutter GPU API 等,展示了如何提升代码质量和用户体验。
60 1