1.一篇文章介绍dart基础语法

本文详细介绍了Dart编程语言的基础知识,包括基本数据类型、变量与常量、集合类型(列表和映射)、控制流语句、函数、类与对象、异步编程(Future与async/await)、函数进阶(可选参数与默认值)以及类继承、接口、Mixins和泛型等内容。
摘要由CSDN通过智能技术生成

一、基本数据类型

  1. 数值类型

    • Dart支持整型(int)和浮点型(double)数值。例如:

      int age = 25;
      double pi = 3.14159;
      
  2. 布尔类型

    • Boolean类型只有两个值:true和false。

      bool isDone = false;
      
  3. 字符串

    • Dart中的字符串可以使用单引号或双引号包裹,支持多行字符串和模板字符串。

      String name = 'Alice';
      var greeting = 'Hello, $name!';
      
  4. 空值

    • Dart有一个特殊的类型null,表示没有值或者缺失值。

二、变量与常量

  • 变量声明

    • 使用var关键字声明动态类型变量,或者明确指定类型。

      var count = 10; // 动态类型
      int score = 100; // 明确指定为int类型
      
  • 常量声明

    • 使用const或final关键字定义不可变值。

      const PI = 3.14; // 构造时即计算并存储,可用于编译时常量优化
      final immutableValue = 'Immutable'; // 初始化后值不可更改
      

三、集合类型

  • 列表(Lists)

    • 列表是有序的、可变的数据集合。

      List<int> numbers = [1, 2, 3]; // 定义一个整数类型的列表
      
  • 映射(Maps)

    • 映射是键值对的集合。

      Map<String, dynamic> person = {'name': 'Bob', 'age': 30}; 
      

四、控制流语句

  • 条件判断

    • 使用ifelse结构进行条件分支。

      if (score > 90) {
        print('优秀');
      } else {
        print('继续努力');
      }
      
  • 循环

    • Dart提供了for循环(包括普通循环和遍历集合)、while和do…while循环。

      for (int i = 0; i < 5; i++) {
        print(i);
      }
      
      while (condition) {
        // 循环体
      }
      

五、函数

  • 定义函数

    • 函数可以通过fun关键字声明,并可选择性地指定返回类型。

      int add(int a, int b) {
        return a + b;
      }
      
  • 匿名函数(Lambdas)

    • Dart也支持简洁的匿名函数表达式。

      var sum = (int a, int b) => a + b;
      

六、类与对象

  • 定义类

    • 类在Dart中用于创建面向对象的程序模型。

      class Person {
        String name;
        int age;
      
        Person(this.name, this.age);
      
        void introduce() {
          print('My name is $name and I am $age years old.');
        }
      }
      
      var alice = Person('Alice', 25);
      alice.introduce();
      

七、集合操作

  • 列表操作

    • Dart提供了丰富的列表操作方法,如添加、删除、查询和迭代等。

      Dart

      List<String> hobbies = ['阅读', '运动'];
      hobbies.add('编程'); // 添加元素
      hobbies.removeAt(0); // 删除指定索引的元素
      hobbies.contains('编程'); // 判断是否包含某元素
      for (var hobby in hobbies) {
        print(hobby);
      }
      
  • 映射操作

    • 映射(map)也有相应的增删改查操作,还可以使用forEach进行遍历。

      Dart

      Map<String, String> skills = {'编程': 'Dart', '设计': 'UI/UX'};
      skills['数据分析'] = 'SQL'; // 添加键值对
      skills.remove('设计'); // 删除键值对
      skills.containsKey('编程'); // 判断是否存在某键
      skills.forEach((key, value) => print('$key: $value'));
      

八、控制流进阶

  • switch语句

    • Dart中的switch语句可以用于替代多个if…else if…else条件判断。

      switch (grade) {
        case 'A':
        print('优秀');
          break;
      case 'B':
        case 'C':
        print('良好');
          break;
      default:
          print('继续努力');
      }
      
  • 断言

    • 使用assert可以在开发阶段检查条件是否满足,如果不满足则抛出 AssertionError。

      assert(age >= 0, '年龄不能为负数');
      
  • 循环进阶

    • for-in循环可用于遍历集合或映射。

      for (var item in collection) {
        print(item);
      }
      for (var key in map.keys) {
        print('$key: ${map[key]}');
      }
      

九、异步编程

  • Future与async/await

    • Dart中,异步操作通常返回一个 Future 对象,配合 async 和 await 关键字实现异步代码的简洁书写。

      Future<void> fetchData() async {
        var response = await http.get(Uri.parse('https://example.com/data'));
        print(response.body);
      }
      

十、函数进阶

  • 可选参数与默认值

    • Dart允许函数具有可选参数,并可以设置默认值。

      void greet(String name, {String greeting = 'Hello'}) {
        print('$greeting, $name!');
      }
      greet('Alice'); // 输出:Hello, Alice!
      greet('Bob', greeting: 'Hi'); // 输出:Hi, Bob!
      
  • 命名参数

    • 使用命名参数可以使函数调用更清晰易读,尤其在参数较多或可选参数较多的情况下。(这一点在flutter开发中很明显

      void showCoordinates({required double x, required double y}) {
        print('($x, $y)');
      }
      showCoordinates(x: 10, y: 20);
      

十一、类继承与接口

  • 类继承

    • Dart支持单继承,子类通过extends关键字继承父类的属性和方法。

      class Animal {
        void eat() {
          print('吃东西');
        }
      }
      
      class Dog extends Animal {
        void bark() {
          print('汪汪叫');
        }
      }
      
      Dog dog = Dog();
      dog.eat(); // 输出:吃东西
      dog.bark(); // 输出:汪汪叫
      
  • 接口

    • 接口(Interfaces)规定了类应该具有的方法和属性,通过implements关键字实现。

      abstract class CanFly {
        void fly();
      }
      
      class Bird implements CanFly {
        
        void fly() {
          print('飞翔');
        }
      }
      
      Bird bird = Bird();
      bird.fly(); // 输出:飞翔
      

十二、Mixins与泛型

  • Mixins

    • Mixins是一种在不改变类继承结构的情况下复用代码的方式。

      mixin Printable {
        void printInfo() {
          print('基本信息');
        }
      }
      
      class Person with Printable {
        String name;
      }
      
      Person person = Person();
      person.printInfo(); // 输出:基本信息
      
  • 泛型

    • 泛型允许在定义类、函数或方法时使用占位类型,以便在使用时指定具体类型。

      class Box<T> {
        T content;
        Box(this.content);
      }
      
      Box<int> integerBox = Box(10);
      Box<String> stringBox = Box('Hello');
      

至此,我们已概览了Dart语言的基础语法,包括变量、数据类型、控制流、函数、类、异步编程、继承、接口、Mixins和泛型等核心内容。

对于已经有Java和Kotlin基础的同学来说,Dart非常容易上手,因为Dart也是一门面向对象的语言,并且具有很多与Java和Kotlin相似的特性,比如类、接口、继承、封装、异常处理、泛型、函数等等。然而,Dart也有一些独特之处,比如我们上面提到的Mixins以及函数的命名参数,Flutter正是利用命名参数这种特性来实现它的的声明式UI

所以对于想要学习Flutter的同学,花一点时间学习一下上面的基础语法就足够了,后面通过对flutter的学习

  • 10
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值