目录


一、 引言:变量——程序的最小记忆单元

在计算机的世界里,任何复杂的逻辑最终都归结为对数据的处理。而变量(Variable),正是程序在运行时用来“记忆”这些数据的最小单元。在 Dart 语言中,变量的声明不仅仅是开辟一段内存空间,更是一种契约的建立。

二、 声明的多样性:var, final 与 const

Dart 提供了多种声明变量的方式,理解它们的区别是编写稳健代码的第一步。

2.1 类型推断 (var)

使用 var 声明变量时,Dart 会根据初始值自动推断其类型。一旦推断完成,该变量的类型便固定下来。

var price = 99.9; // 推断为 double
// price = "free"; // 错误:不能将 String 赋值给 double

2.2 不可变变量 (final)

final 声明的变量只能被赋值一次。它在程序运行时(Runtime)确定其值。在我们的示例代码中,许多 UI 相关的配置(如 final List<Widget> _pages)都使用了 final

2.3 编译时常量 (const)

const 是比 final 更严格的约束。它声明的是编译时常量。使用 const 可以帮助编译器优化内存,尤其是在 Flutter 的 UI 构建中。

// 示例代码中的应用
const String appLabel = "HarmonyOS Flutter Resume";

三、 强类型的力量:明确定义的价值

虽然 Dart 具备强大的类型推断能力,但在编写复杂的业务逻辑(如计算器)时,显式地声明类型往往能提供更好的代码可读性。

  • int:用于计数、索引、年龄等。
  • double:用于金额、坐标、百分比。
  • String:文本信息的载体。
  • bool:逻辑判断的开关。

四、 延迟赋值:late 关键字的优雅

在 Flutter 开发中,经常会遇到某些变量无法在声明时立即初始化,但又能保证在使用前完成赋值的情况。

// 示例代码中的 CalculatorDemo
late double result; // 延迟初始化:告诉编译器,我保证在 build 之前会计算出结果

五、 实战演练:计算器逻辑在 UI 中的体现

lib/main.dartCalculatorDemo 中,我们通过变量建模实现了简单的加减运算:

class _CalculatorDemoState extends State<CalculatorDemo> {
  // 1. 变量声明
  double numberA = 10.5; 
  double numberB = 5.0;  
  String operator = "+"; 
  late double result;    

  
  void initState() {
    super.initState();
    _calculate(); // 2. 初始化逻辑
  }

  void _calculate() {
    setState(() {
      // 3. 逻辑运算
      if (operator == "+") {
        result = numberA + numberB;
      } else if (operator == "-") {
        result = numberA - numberB;
      }
    });
  }
}

在这里插入图片描述

通过点击 UI 上的按钮修改 operator 变量,并调用 setState 触发界面重绘,这就是 Flutter 最基础的“状态驱动 UI”思想,而状态的本质就是这些变量。

六、 结语

变量是代码的基石。在 Dart 中,选择正确的声明方式不仅是为了满足语法要求,更是为了向他人传达代码的真实意图。从 Day 1 开始,建立严谨的声明习惯,将为您后续的 Flutter 之旅打下坚实的基础。


欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐